From fc7d4b25ab9222f3fca1140a5fccf4aa03d30936 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Thu, 27 Jan 2022 18:45:24 +0100
Subject: [PATCH] Revert "Quentin 27/01/2022: Merge branch QR_turb into main"
 Cas test AROME non bit-repro

This reverts commit 6050b2b625a58b9761b1d37717e46667219495ac, reversing
changes made to 71f963d8bbaef67155a656b46e303da1f49e8948.
---
 docs/TODO                                     |    4 +-
 src/arome/aux/budget_DDH.F90                  |   13 +-
 src/arome/aux/get_halo.F90                    |   33 -
 src/arome/aux/gradient_m.F90                  |   18 +-
 src/arome/aux/gradient_u.F90                  |   12 +-
 src/arome/aux/gradient_v.F90                  |   12 +-
 src/arome/aux/gradient_w.F90                  |   12 +-
 src/arome/aux/ibm_mixinglength.f90            |   35 -
 src/arome/aux/modd_argslist_ll.F90            |    6 -
 src/arome/aux/modd_field.F90                  |   29 -
 src/arome/aux/modd_frc.F90                    |  112 --
 src/arome/aux/modd_ibm_paramn.f90             |   15 -
 src/arome/aux/modd_oceanh.F90                 |   47 -
 src/arome/aux/mode_argslist_ll.F90            |   44 -
 src/arome/aux/mode_gather_ll.F90              |   28 -
 src/arome/aux/mode_io_field_write.F90         |   16 -
 src/arome/aux/mode_ll.F90                     |   27 +-
 src/arome/aux/mode_mppdb.F90                  |   18 -
 src/arome/aux/mode_sources_neg_correct.F90    |   19 -
 src/arome/aux/mode_tridiag_w.F90              |    3 -
 src/arome/aux/modi_gradient_m.F90             |   18 +-
 src/arome/aux/modi_gradient_u.F90             |   12 +-
 src/arome/aux/modi_gradient_v.F90             |   12 +-
 src/arome/aux/modi_gradient_w.F90             |   12 +-
 src/arome/aux/modi_second_mnh.F90             |    7 -
 src/arome/aux/modi_shuman.F90                 |   16 +-
 src/arome/aux/shuman.F90                      |   21 +-
 src/arome/ext/aro_turb_mnh.F90                |   53 +-
 src/arome/gmkpack_ignored_files               |   26 -
 src/arome/micro/modd_parameters.F90           |   14 -
 src/arome/micro/modd_refaro.F90               |    1 -
 src/arome/turb/bl_depth_diag_1d.F90           |   38 +
 .../turb/bl_depth_diag_3d.F90}                |   52 +-
 src/arome/turb/modd_turbn.F90                 |    3 +
 .../turb/mode_compute_updraft_rhcj10.F90      |    2 +-
 src/{common => arome}/turb/mode_prandtl.F90   |  561 +-------
 src/arome/turb/modi_bl89.F90                  |   22 +
 src/arome/turb/modi_bl_depth_diag.F90         |   36 +
 src/arome/turb/modi_bl_depth_diag_3d.F90      |   24 +
 src/arome/turb/modi_emoist.F90                |   26 +
 src/arome/turb/modi_etheta.F90                |   28 +
 src/arome/turb/modi_prandtl.F90               |   72 ++
 src/arome/turb/modi_rmc01.F90                 |   24 +
 src/arome/turb/modi_sbl_depth.F90             |   24 +
 src/arome/turb/modi_th_r_from_thl_rt_1d.F90   |   24 +
 src/arome/turb/modi_th_r_from_thl_rt_2d.F90   |   24 +
 src/arome/turb/modi_th_r_from_thl_rt_3d.F90   |   27 +
 src/arome/turb/modi_thl_rt_from_th_r_mf.F90   |   31 +
 src/arome/turb/modi_tke_eps_sources.F90       |   63 +
 src/arome/turb/modi_tm06.F90                  |   25 +
 src/arome/turb/modi_tm06_h.F90                |   24 +
 src/arome/turb/modi_tridiag.F90               |   25 +
 src/arome/turb/modi_tridiag_massflux.F90      |   28 +
 src/arome/turb/modi_tridiag_thermo.F90        |   26 +
 src/arome/turb/modi_tridiag_tke.F90           |   27 +
 src/arome/turb/modi_tridiag_wind.F90          |   27 +
 src/{common => arome}/turb/modi_turb.F90      |   87 +-
 src/arome/turb/modi_turb_ver.F90              |  125 ++
 src/arome/turb/modi_turb_ver_dyn_flux.F90     |   86 ++
 src/arome/turb/modi_turb_ver_sv_corr.F90      |   44 +
 src/arome/turb/modi_turb_ver_sv_flux.F90      |   65 +
 src/arome/turb/modi_turb_ver_thermo_corr.F90  |  107 ++
 src/arome/turb/modi_turb_ver_thermo_flux.F90  |  118 ++
 src/arome/turb/modi_update_lm.F90             |   18 +
 src/arome/turb/prandtl.F90                    |  501 +++++++
 .../turb/th_r_from_thl_rt_1d.F90}             |   20 +-
 .../turb/th_r_from_thl_rt_2d.F90}             |   14 +-
 .../turb/th_r_from_thl_rt_3d.F90}             |   13 +-
 .../turb/thl_rt_from_th_r_mf.F90}             |    9 +-
 .../turb/tke_eps_sources.F90}                 |  269 ++--
 src/{common => arome}/turb/turb.F90           | 1148 +++++++----------
 .../turb/turb_ver.F90}                        |  262 ++--
 .../turb/turb_ver_dyn_flux.F90}               |  342 ++---
 .../turb/turb_ver_sv_corr.F90}                |   49 +-
 .../turb/turb_ver_sv_flux.F90}                |  125 +-
 .../turb/turb_ver_thermo_corr.F90}            |  110 +-
 .../turb/turb_ver_thermo_flux.F90}            |  523 ++------
 src/common/aux/modd_blowsnow.F90              |   80 --
 src/common/aux/modd_dimn.F90                  |   87 --
 src/common/aux/modd_gridn.F90                 |   67 -
 src/common/aux/modd_io.F90                    |   30 +-
 src/common/aux/modd_metricsn.F90              |   78 --
 src/common/aux/modd_turbn.F90                 |  108 --
 src/common/aux/{tools.F90 => tools.f90}       |    0
 src/common/turb/{mode_bl89.F90 => bl89.F90}   |    8 -
 .../turb/{mode_emoist.F90 => emoist.F90}      |    7 +-
 .../turb/{mode_etheta.F90 => etheta.F90}      |    5 +-
 src/common/turb/mode_coefj.f90                |  135 --
 src/common/turb/mode_compute_entr_detr.F90    |    4 +-
 src/common/turb/mode_compute_updraft.F90      |    2 +-
 src/common/turb/mode_compute_updraft_raha.F90 |    2 +-
 src/common/turb/mode_mf_turb.F90              |    2 +-
 src/common/turb/mode_rotate_wind.F90          |  204 ---
 src/common/turb/mode_turb_hor.F90             |  367 ------
 src/common/turb/mode_turb_hor_dyn_corr.F90    |  556 --------
 src/common/turb/mode_turb_hor_splt.F90        |  535 --------
 src/common/turb/mode_turb_hor_sv_corr.F90     |  185 ---
 src/common/turb/mode_turb_hor_sv_flux.F90     |  315 -----
 src/common/turb/mode_turb_hor_thermo_corr.F90 |  409 ------
 src/common/turb/mode_turb_hor_thermo_flux.F90 |  688 ----------
 src/common/turb/mode_turb_hor_tke.F90         |  213 ---
 src/common/turb/mode_turb_hor_uv.F90          |  292 -----
 src/common/turb/mode_turb_hor_uw.F90          |  248 ----
 src/common/turb/mode_turb_hor_vw.F90          |  259 ----
 src/common/turb/mode_update_lm.F90            |  119 --
 src/common/turb/{mode_rmc01.F90 => rmc01.F90} |   11 +-
 .../{mode_sbl_depth.F90 => sbl_depth.F90}     |   10 +-
 src/common/turb/shallow_mf.F90                |    2 +-
 src/common/turb/{mode_tm06.F90 => tm06.F90}   |    7 +-
 .../turb/{mode_tm06_h.F90 => tm06_h.F90}      |    7 +-
 .../turb/{mode_tridiag.F90 => tridiag.F90}    |    7 +-
 ...diag_massflux.F90 => tridiag_massflux.F90} |    7 +-
 ..._tridiag_thermo.F90 => tridiag_thermo.F90} |    7 +-
 .../{mode_tridiag_tke.F90 => tridiag_tke.F90} |    7 +-
 ...mode_tridiag_wind.F90 => tridiag_wind.F90} |    7 +-
 src/mesonh/turb/prandtl.f90                   |    6 +-
 src/mesonh/turb/th_r_from_thl_rt_1d.f90       |  203 ---
 src/mesonh/turb/th_r_from_thl_rt_2d.f90       |  128 --
 src/mesonh/turb/th_r_from_thl_rt_3d.f90       |  126 --
 src/mesonh/turb/turb.f90                      |   47 +-
 src/mesonh/turb/turb_ver.f90                  |   75 +-
 src/mesonh/turb/turb_ver_dyn_flux.f90         |   22 +-
 src/mesonh/turb/turb_ver_sv_corr.f90          |    8 +-
 src/mesonh/turb/turb_ver_sv_flux.f90          |   24 +-
 src/mesonh/turb/turb_ver_thermo_corr.f90      |  118 +-
 src/mesonh/turb/turb_ver_thermo_flux.f90      |   42 +-
 126 files changed, 3168 insertions(+), 8701 deletions(-)
 delete mode 100644 src/arome/aux/get_halo.F90
 delete mode 100644 src/arome/aux/ibm_mixinglength.f90
 delete mode 100644 src/arome/aux/modd_argslist_ll.F90
 delete mode 100644 src/arome/aux/modd_field.F90
 delete mode 100644 src/arome/aux/modd_frc.F90
 delete mode 100644 src/arome/aux/modd_ibm_paramn.f90
 delete mode 100644 src/arome/aux/modd_oceanh.F90
 delete mode 100644 src/arome/aux/mode_argslist_ll.F90
 delete mode 100644 src/arome/aux/mode_gather_ll.F90
 delete mode 100644 src/arome/aux/mode_io_field_write.F90
 delete mode 100644 src/arome/aux/mode_mppdb.F90
 delete mode 100644 src/arome/aux/mode_sources_neg_correct.F90
 delete mode 100644 src/arome/aux/mode_tridiag_w.F90
 delete mode 100644 src/arome/aux/modi_second_mnh.F90
 create mode 100644 src/arome/turb/bl_depth_diag_1d.F90
 rename src/{common/turb/mode_bl_depth_diag.F90 => arome/turb/bl_depth_diag_3d.F90} (57%)
 create mode 100644 src/arome/turb/modd_turbn.F90
 rename src/{common => arome}/turb/mode_prandtl.F90 (77%)
 create mode 100644 src/arome/turb/modi_bl89.F90
 create mode 100644 src/arome/turb/modi_bl_depth_diag.F90
 create mode 100644 src/arome/turb/modi_bl_depth_diag_3d.F90
 create mode 100644 src/arome/turb/modi_emoist.F90
 create mode 100644 src/arome/turb/modi_etheta.F90
 create mode 100644 src/arome/turb/modi_prandtl.F90
 create mode 100644 src/arome/turb/modi_rmc01.F90
 create mode 100644 src/arome/turb/modi_sbl_depth.F90
 create mode 100644 src/arome/turb/modi_th_r_from_thl_rt_1d.F90
 create mode 100644 src/arome/turb/modi_th_r_from_thl_rt_2d.F90
 create mode 100644 src/arome/turb/modi_th_r_from_thl_rt_3d.F90
 create mode 100644 src/arome/turb/modi_thl_rt_from_th_r_mf.F90
 create mode 100644 src/arome/turb/modi_tke_eps_sources.F90
 create mode 100644 src/arome/turb/modi_tm06.F90
 create mode 100644 src/arome/turb/modi_tm06_h.F90
 create mode 100644 src/arome/turb/modi_tridiag.F90
 create mode 100644 src/arome/turb/modi_tridiag_massflux.F90
 create mode 100644 src/arome/turb/modi_tridiag_thermo.F90
 create mode 100644 src/arome/turb/modi_tridiag_tke.F90
 create mode 100644 src/arome/turb/modi_tridiag_wind.F90
 rename src/{common => arome}/turb/modi_turb.F90 (69%)
 create mode 100644 src/arome/turb/modi_turb_ver.F90
 create mode 100644 src/arome/turb/modi_turb_ver_dyn_flux.F90
 create mode 100644 src/arome/turb/modi_turb_ver_sv_corr.F90
 create mode 100644 src/arome/turb/modi_turb_ver_sv_flux.F90
 create mode 100644 src/arome/turb/modi_turb_ver_thermo_corr.F90
 create mode 100644 src/arome/turb/modi_turb_ver_thermo_flux.F90
 create mode 100644 src/arome/turb/modi_update_lm.F90
 create mode 100644 src/arome/turb/prandtl.F90
 rename src/{common/turb/mode_th_r_from_thl_rt_1d.F90 => arome/turb/th_r_from_thl_rt_1d.F90} (92%)
 rename src/{common/turb/mode_th_r_from_thl_rt_2d.F90 => arome/turb/th_r_from_thl_rt_2d.F90} (87%)
 rename src/{common/turb/mode_th_r_from_thl_rt_3d.F90 => arome/turb/th_r_from_thl_rt_3d.F90} (87%)
 rename src/{common/turb/mode_thl_rt_from_th_r_mf.F90 => arome/turb/thl_rt_from_th_r_mf.F90} (90%)
 rename src/{common/turb/mode_tke_eps_sources.F90 => arome/turb/tke_eps_sources.F90} (66%)
 rename src/{common => arome}/turb/turb.F90 (58%)
 rename src/{common/turb/mode_turb_ver.F90 => arome/turb/turb_ver.F90} (78%)
 rename src/{common/turb/mode_turb_ver_dyn_flux.F90 => arome/turb/turb_ver_dyn_flux.F90} (72%)
 rename src/{common/turb/mode_turb_ver_sv_corr.F90 => arome/turb/turb_ver_sv_corr.F90} (80%)
 rename src/{common/turb/mode_turb_ver_sv_flux.F90 => arome/turb/turb_ver_sv_flux.F90} (84%)
 rename src/{common/turb/mode_turb_ver_thermo_corr.F90 => arome/turb/turb_ver_thermo_corr.F90} (93%)
 rename src/{common/turb/mode_turb_ver_thermo_flux.F90 => arome/turb/turb_ver_thermo_flux.F90} (65%)
 delete mode 100644 src/common/aux/modd_blowsnow.F90
 delete mode 100644 src/common/aux/modd_dimn.F90
 delete mode 100644 src/common/aux/modd_gridn.F90
 delete mode 100644 src/common/aux/modd_metricsn.F90
 delete mode 100644 src/common/aux/modd_turbn.F90
 rename src/common/aux/{tools.F90 => tools.f90} (100%)
 rename src/common/turb/{mode_bl89.F90 => bl89.F90} (97%)
 rename src/common/turb/{mode_emoist.F90 => emoist.F90} (97%)
 rename src/common/turb/{mode_etheta.F90 => etheta.F90} (98%)
 delete mode 100644 src/common/turb/mode_coefj.f90
 delete mode 100644 src/common/turb/mode_rotate_wind.F90
 delete mode 100644 src/common/turb/mode_turb_hor.F90
 delete mode 100644 src/common/turb/mode_turb_hor_dyn_corr.F90
 delete mode 100644 src/common/turb/mode_turb_hor_splt.F90
 delete mode 100644 src/common/turb/mode_turb_hor_sv_corr.F90
 delete mode 100644 src/common/turb/mode_turb_hor_sv_flux.F90
 delete mode 100644 src/common/turb/mode_turb_hor_thermo_corr.F90
 delete mode 100644 src/common/turb/mode_turb_hor_thermo_flux.F90
 delete mode 100644 src/common/turb/mode_turb_hor_tke.F90
 delete mode 100644 src/common/turb/mode_turb_hor_uv.F90
 delete mode 100644 src/common/turb/mode_turb_hor_uw.F90
 delete mode 100644 src/common/turb/mode_turb_hor_vw.F90
 delete mode 100644 src/common/turb/mode_update_lm.F90
 rename src/common/turb/{mode_rmc01.F90 => rmc01.F90} (95%)
 rename src/common/turb/{mode_sbl_depth.F90 => sbl_depth.F90} (91%)
 rename src/common/turb/{mode_tm06.F90 => tm06.F90} (96%)
 rename src/common/turb/{mode_tm06_h.F90 => tm06_h.F90} (96%)
 rename src/common/turb/{mode_tridiag.F90 => tridiag.F90} (98%)
 rename src/common/turb/{mode_tridiag_massflux.F90 => tridiag_massflux.F90} (98%)
 rename src/common/turb/{mode_tridiag_thermo.F90 => tridiag_thermo.F90} (98%)
 rename src/common/turb/{mode_tridiag_tke.F90 => tridiag_tke.F90} (98%)
 rename src/common/turb/{mode_tridiag_wind.F90 => tridiag_wind.F90} (98%)
 delete mode 100644 src/mesonh/turb/th_r_from_thl_rt_1d.f90
 delete mode 100644 src/mesonh/turb/th_r_from_thl_rt_2d.f90
 delete mode 100644 src/mesonh/turb/th_r_from_thl_rt_3d.f90

diff --git a/docs/TODO b/docs/TODO
index 7e98ef1cf..71c56d853 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -59,5 +59,5 @@ Budgets/DDH
 SPP
 - modd_spp_type est pour l'instant dans mpa/micro/externals mais n'est pas de la microphysique
 
-Nettoyage apl_arome non fait (pb a la compilation) ==> 4 arguments dans aro_turb_mnh supprimés (non utilisés)
-turb.F90 : il reste un CALL à SOURCES_NEG_CORRECT à ajouter. Besoin de récupérer CCLOUD dans apl_arome : comment ?
+Gradients/shuman:
+- essayer de mettre des abort dans les routines arome (shuman doit suffire)
diff --git a/src/arome/aux/budget_DDH.F90 b/src/arome/aux/budget_DDH.F90
index 5e448dc8e..f934798c0 100644
--- a/src/arome/aux/budget_DDH.F90
+++ b/src/arome/aux/budget_DDH.F90
@@ -105,17 +105,8 @@ IF (SIZE(PVARS,3)==NFLEVGDDH+2) THEN
 ELSE
   IOFF=0
 ENDIF
-!if length is less than 4, fill with budget old names
-IF(LEN(HBUVAR)==1) THEN
-  CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_BU'
-ELSE IF(LEN(HBUVAR)==2) THEN
-  CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_B'
-ELSE IF(LEN(HBUVAR)==3) THEN
-  CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//'_'
-ELSE
-  CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))
-END IF
-!
+
+CLPROC=HBUVAR(1:MIN(4, LEN(HBUVAR)))//REPEAT('_', MAX(0, 4-LEN(HBUVAR))) !if length is less than 4, fill with '_'
 IF (YDLDDH%LDDH_OMP) THEN
   CLDDH='T'//YDDDH%YVARMULT(KBUDN)%CNAME//CLPROC
 ELSE
diff --git a/src/arome/aux/get_halo.F90 b/src/arome/aux/get_halo.F90
deleted file mode 100644
index 443d33f13..000000000
--- a/src/arome/aux/get_halo.F90
+++ /dev/null
@@ -1,33 +0,0 @@
-!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-! Modifications:
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!-----------------------------------------------------------------
-!     ####################
-      MODULE MODI_GET_HALO
-!     ####################
-!
-INTERFACE
-!
-SUBROUTINE GET_HALO(PSRC)
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC    ! variable at t
-!
-END SUBROUTINE GET_HALO
-!
-END INTERFACE
-!
-END MODULE MODI_GET_HALO         
-!
-!-------------------------------------------------------------------------------
-!     #########################
-      SUBROUTINE GET_HALO(PSRC)
-!     #########################
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSRC    ! variable at t
-!
-END SUBROUTINE GET_HALO
-!-----------------------------------------------------------------------
diff --git a/src/arome/aux/gradient_m.F90 b/src/arome/aux/gradient_m.F90
index 1bd975642..f9427caa2 100644
--- a/src/arome/aux/gradient_m.F90
+++ b/src/arome/aux/gradient_m.F90
@@ -70,8 +70,8 @@ REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the mass point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZX    ! metric coefficient dzx
-INTEGER,                 INTENT(IN),OPTIONAL  :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,                 INTENT(IN),OPTIONAL  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                 INTENT(IN)  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 
 !
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_M_M ! result mass point
@@ -101,7 +101,7 @@ END IF
 IF (LHOOK) CALL DR_HOOK('GX_M_M',1,ZHOOK_HANDLE)
 END FUNCTION GX_M_M
 !     ######spl
-      FUNCTION GX_M_U(KKA, KKU, KL,PY,PDXX,PDZZ,PDZX) RESULT(PGX_M_U)
+      FUNCTION GX_M_U(PY,PDXX,PDZZ,PDZX, KKA, KKU, KL) RESULT(PGX_M_U)
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     ##################################################
@@ -329,8 +329,8 @@ REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the mass point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDYY    ! metric coefficient dyy
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZY    ! metric coefficient dzy
-INTEGER,                 INTENT(IN),OPTIONAL  :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,                 INTENT(IN),OPTIONAL  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                 INTENT(IN)  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 !
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_M_M ! result mass point
 !
@@ -359,7 +359,7 @@ ENDIF
 IF (LHOOK) CALL DR_HOOK('GY_M_M',1,ZHOOK_HANDLE)
 END FUNCTION GY_M_M
 !     ######spl
-      FUNCTION GY_M_V(KKA,KKU,KL,PY,PDYY,PDZZ,PDZY) RESULT(PGY_M_V)
+      FUNCTION GY_M_V(PY,PDYY,PDZZ,PDZY, KKA, KKU, KL) RESULT(PGY_M_V)
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     ##################################################
@@ -551,8 +551,8 @@ IMPLICIT NONE
 !
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the mass point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 !
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_M_M ! result mass point
 !
@@ -575,7 +575,7 @@ PGZ_M_M(:,:,:)= MZF(DZM(PA(:,:,:), KKA, KKU, KL)/PDZZ(:,:,:), KKA, KKU, KL)
 IF (LHOOK) CALL DR_HOOK('GZ_M_M',1,ZHOOK_HANDLE)
 END FUNCTION GZ_M_M
 !     ######spl
-      FUNCTION GZ_M_W(KKA, KKU, KL,PY,PDZZ) RESULT(PGZ_M_W)
+      FUNCTION GZ_M_W(PY,PDZZ, KKA, KKU, KL) RESULT(PGZ_M_W)
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     #########################################
diff --git a/src/arome/aux/gradient_u.F90 b/src/arome/aux/gradient_u.F90
index 317019d20..96c0af25b 100644
--- a/src/arome/aux/gradient_u.F90
+++ b/src/arome/aux/gradient_u.F90
@@ -66,8 +66,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,                 INTENT(IN),OPTIONAL   :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,                 INTENT(IN),OPTIONAL   :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                 INTENT(IN)  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the U point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -168,8 +168,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,                 INTENT(IN),OPTIONAL   :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,                 INTENT(IN),OPTIONAL   :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                 INTENT(IN)  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the U point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDYY    ! metric coefficient dyy
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -261,8 +261,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,              INTENT(IN),OPTIONAL      :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL      :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the U point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 !
diff --git a/src/arome/aux/gradient_v.F90 b/src/arome/aux/gradient_v.F90
index 53e81c083..3dd2f2377 100644
--- a/src/arome/aux/gradient_v.F90
+++ b/src/arome/aux/gradient_v.F90
@@ -66,8 +66,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,                 INTENT(IN),OPTIONAL  :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,                 INTENT(IN),OPTIONAL  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                 INTENT(IN)  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the V point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -165,8 +165,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,                 INTENT(IN),OPTIONAL  :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,                 INTENT(IN),OPTIONAL  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                 INTENT(IN)  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the V point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDYY    ! metric coefficient dyy
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -260,8 +260,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the V point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 !
diff --git a/src/arome/aux/gradient_w.F90 b/src/arome/aux/gradient_w.F90
index 66216739e..b17ca4bab 100644
--- a/src/arome/aux/gradient_w.F90
+++ b/src/arome/aux/gradient_w.F90
@@ -56,8 +56,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,                 INTENT(IN),OPTIONAL  :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,                 INTENT(IN),OPTIONAL  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                 INTENT(IN)  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the W point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -147,8 +147,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,                 INTENT(IN),OPTIONAL  :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,                 INTENT(IN),OPTIONAL  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                 INTENT(IN)  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the W point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDYY    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -236,8 +236,8 @@ IMPLICIT NONE
 !
 !*       0.1   declarations of arguments and result
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the W point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 !
diff --git a/src/arome/aux/ibm_mixinglength.f90 b/src/arome/aux/ibm_mixinglength.f90
deleted file mode 100644
index 766627888..000000000
--- a/src/arome/aux/ibm_mixinglength.f90
+++ /dev/null
@@ -1,35 +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_MIXINGLENGTH
-  !     ############################
-  !
-  INTERFACE 
-     !
-     SUBROUTINE IBM_MIXINGLENGTH(PLM,PLEPS,PMU,PHI,PTKE)
-       !
-       REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLM
-       REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLEPS
-       REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PMU
-       REAL, DIMENSION(:,:,:), INTENT(IN)    :: PHI
-       REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTKE
-       !
-     END SUBROUTINE IBM_MIXINGLENGTH
-     !
-  END INTERFACE
-END MODULE MODI_IBM_MIXINGLENGTH
-  !
-  SUBROUTINE IBM_MIXINGLENGTH(PLM,PLEPS,PMU,PHI,PTKE)
-       !
-       REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLM
-       REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLEPS
-       REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PMU
-       REAL, DIMENSION(:,:,:), INTENT(IN)    :: PHI
-       REAL, DIMENSION(:,:,:), INTENT(IN)    :: PTKE
-       !
-     END SUBROUTINE IBM_MIXINGLENGTH
-     !
diff --git a/src/arome/aux/modd_argslist_ll.F90 b/src/arome/aux/modd_argslist_ll.F90
deleted file mode 100644
index 03db23cd5..000000000
--- a/src/arome/aux/modd_argslist_ll.F90
+++ /dev/null
@@ -1,6 +0,0 @@
-MODULE MODD_ARGSLIST_ll
-IMPLICIT NONE
-TYPE LIST_ll
-END TYPE LIST_ll
-CONTAINS
-END MODULE MODD_ARGSLIST_ll
diff --git a/src/arome/aux/modd_field.F90 b/src/arome/aux/modd_field.F90
deleted file mode 100644
index be5755c73..000000000
--- a/src/arome/aux/modd_field.F90
+++ /dev/null
@@ -1,29 +0,0 @@
-MODULE MODD_FIELD
-  USE MODD_PARAMETERS, ONLY: NGRIDUNKNOWN, NMNHNAMELGTMAX, NSTDNAMELGTMAX
-  INTEGER, PARAMETER :: NMNHDIM_UNKNOWN             = -2
-  INTEGER, PARAMETER :: NMNHMAXDIMS = 6 ! Cannot be less than 6
-  INTEGER,PARAMETER :: TYPEUNDEF = -1, TYPEINT = 1, TYPELOG = 2, TYPEREAL = 3, TYPECHAR = 4, TYPEDATE = 5
-!
-TYPE TFIELDDATA
-  CHARACTER(LEN=NMNHNAMELGTMAX) :: CMNHNAME  = '' !Name of the field (for MesoNH, non CF convention)
-  CHARACTER(LEN=NSTDNAMELGTMAX) :: CSTDNAME  = '' !Standard name (CF convention)
-  CHARACTER(LEN=32)  :: CLONGNAME = '' !Long name (CF convention)
-  CHARACTER(LEN=40)  :: CUNITS    = '' !Canonical units (CF convention)
-  CHARACTER(LEN=100) :: CCOMMENT  = '' !Comment (for MesoNH, non CF convention)
-  INTEGER            :: NGRID     = NGRIDUNKNOWN !Localization on the model grid
-  INTEGER            :: NTYPE     = TYPEUNDEF !Datatype
-  INTEGER            :: NDIMS     = 0  !Number of dimensions
-  INTEGER, DIMENSION(NMNHMAXDIMS) :: NDIMLIST = NMNHDIM_UNKNOWN ! List of dimensions of the data field
-  !
-  INTEGER            :: NFILLVALUE =  -2147483647            !Fill value for integer fields
-  REAL               :: XFILLVALUE =  9.9692099683868690e+36 !Fill value for real fields
-  INTEGER            :: NVALIDMIN  = -2147483646 !Minimum valid value for integer fields
-  INTEGER            :: NVALIDMAX  =  2147483647 !Maximum valid value for integer fields
-  REAL               :: XVALIDMIN  = -1.E36 !Minimum valid value for real fields
-  REAL               :: XVALIDMAX  =  1.E36 !Maximum valid value for real fields
-  CHARACTER(LEN=2)   :: CDIR      = '' !Type of the data field (XX,XY,--...)
-  CHARACTER(LEN=4)   :: CLBTYPE   = 'NONE' !Type of the lateral boundary (LBX,LBY,LBXU,LBYV)
-  LOGICAL            :: LTIMEDEP  = .FALSE. !Is the field time-dependent?
-END TYPE TFIELDDATA
-!
-END MODULE MODD_FIELD
diff --git a/src/arome/aux/modd_frc.F90 b/src/arome/aux/modd_frc.F90
deleted file mode 100644
index e1d77673e..000000000
--- a/src/arome/aux/modd_frc.F90
+++ /dev/null
@@ -1,112 +0,0 @@
-!MNH_LIC Copyright 1996-2021 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     ###############
-      MODULE MODD_FRC
-!     ###############
-!
-!!***  *MODD_FRC -  Declarative module for the forcing fields
-!!
-!!    PURPOSE
-!!    -------
-!       This module contains NFRC 1D-arrays used by FORCING (geostrophic wind
-!     components, large scale vertical wind, theta and humidity profiles when
-!     the relaxation option is used,large scale theta and humidity gradients
-!     and the translation speed of the domain of simulation.
-!     The following control parameters are used by FORCING:
-!     - LGEOST_UV_FRC and LGEOST_TH_FRC
-!     - LTEND_THRV_FRC and LTEND_UV_FRC
-!     - LVERT_MOTION_FRC  
-!     - LRELAX_THRV_FRC, LRELAX_UV_FRC and LRELAX_UVMEAN_FRC using:
-!         XRELAX_TIME_FRC, XRELAX_HEIGHT_FRC and CRELAX_HEIGHT_TYPE
-!     - LTRANS
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      None 
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation of Meso-NH (module MODD_FRC)
-!!      
-!!
-!!    AUTHOR
-!!    ------
-!!	    Marc Georgelin Labo d'aerologie
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original 29/07/96 
-!!      29/07/96 (Pinty&Suhre) revised
-!!      18/11/96 J.-P. Pinty   addition of the translation
-!!      27/01/98 P. Bechtold   use tendency forcing
-!!                             add SST and surface pressure forcing
-!!      01/2004  V. Masson     surface externalization: removes SST forcing
-!!                   09/2017 Q.Rodier add LTEND_UV_FRC
-!!      03/2021 JL Redelsperger Parameters defining sfc forcing shape for idealized ocean case
-!!      06/2021 F. Couvreux    add LRELAX_UVMEAN_FRC
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-!USE MODD_TYPE_DATE
-!
-IMPLICIT NONE
-!
-!*            fields for FORCING
-!             ------------------
-!
-INTEGER,          SAVE                  :: NFRC     ! number of forcing profiles
-!TYPE (DATE_TIME), SAVE, DIMENSION(:), ALLOCATABLE :: TDTFRC ! date of
-                                                    !  each forcing profile
-!
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XUFRC,   &! geostrophic wind 
-					                       XVFRC,   &! components U and V
-					                       XWFRC     ! large scale vertical wind
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTHFRC,  &! large scale TH profile
-					                       XRVFRC    ! large scale RV profile
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XGXTHFRC,&! large scale TH gradient
-                                           XGYTHFRC  ! along the X and Y axis
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDTHFRC,&! large scale TH tendency
-                                           XTENDRVFRC  ! large scale RV tendency
-REAL, SAVE                              :: XUTRANS, &! horizontal components of
-                                           XVTRANS   !        a constant
-                                                     !   Galilean TRANSlation
-REAL, SAVE, DIMENSION(:), ALLOCATABLE   :: XPGROUNDFRC! surf. pressure 
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDUFRC   ! large scale U tendency
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XTENDVFRC   ! large scale V tendency
-!
-!*            control parameters for FORCING
-!             ------------------------------
-!
-LOGICAL, SAVE     :: LGEOST_UV_FRC      ! enables geostrophic wind term
-LOGICAL, SAVE     :: LGEOST_TH_FRC      ! enables thermal wind advection
-LOGICAL, SAVE     :: LTEND_THRV_FRC     ! enables tendency forcing
-LOGICAL, SAVE     :: LTEND_UV_FRC       ! enables tendency forcing of the wind
-LOGICAL, SAVE     :: LVERT_MOTION_FRC   ! enables prescribed a forced vertical
-					                    ! transport for all prognostic variables
-LOGICAL, SAVE     :: LRELAX_THRV_FRC    ! enables temp. and humidity relaxation
-LOGICAL, SAVE     :: LRELAX_UV_FRC      ! enables  horizontal wind relaxation applied to the full wind field
-LOGICAL, SAVE     :: LRELAX_UVMEAN_FRC  ! enables  horizontal wind relaxation applied to the horiz. avg. wind
-!
-REAL,    SAVE     :: XRELAX_TIME_FRC    ! e-folding time for relaxation 
-REAL,    SAVE     :: XRELAX_HEIGHT_FRC  ! height below which relaxation
-                                        ! is never applied
-CHARACTER(len=4), SAVE :: CRELAX_HEIGHT_TYPE ! "THGR" relax. above maximal dTH/dz
-					                    ! (but always above XRELAX_HEIGHT_FRC)
-					                    ! "FIXE" relax. above XRELAX_HEIGHT_FRC
-!
-LOGICAL, SAVE     :: LTRANS             ! enables a Galilean translation of the
-                                        !         domain of simulation
-LOGICAL, SAVE     :: LPGROUND_FRC       ! enables surf. pressure forcing
-!
-LOGICAL, SAVE     :: LDEEPOC            ! activates sfc forcing for ideal ocean deep conv 
-REAL,    SAVE     :: XCENTX_OC          ! center of sfc forc for ideal ocean
-REAL,    SAVE     :: XRADX_OC           ! radius of sfc forc for ideal ocean
-REAL,    SAVE     :: XCENTY_OC          ! center of sfc forc for ideal ocean
-REAL,    SAVE     :: XRADY_OC           ! radius of sfc forc for ideal ocean
-!
-END MODULE MODD_FRC
diff --git a/src/arome/aux/modd_ibm_paramn.f90 b/src/arome/aux/modd_ibm_paramn.f90
deleted file mode 100644
index 716a93e6d..000000000
--- a/src/arome/aux/modd_ibm_paramn.f90
+++ /dev/null
@@ -1,15 +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 MODD_IBM_PARAM_n
-  !   #######################
-  IMPLICIT NONE
-  LOGICAL          :: LIBM,LIBM_TROUBLE
-  REAL, DIMENSION(:,:,:,:)       , POINTER :: XIBM_LS=>NULL()      ! LSF for MNH
-  REAL, DIMENSION(:,:,:)          , POINTER :: XIBM_XMUT=>NULL()
-END MODULE MODD_IBM_PARAM_n
-!
diff --git a/src/arome/aux/modd_oceanh.F90 b/src/arome/aux/modd_oceanh.F90
deleted file mode 100644
index 663875265..000000000
--- a/src/arome/aux/modd_oceanh.F90
+++ /dev/null
@@ -1,47 +0,0 @@
-!MNH_LIC Copyright 2021-2021 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     #################
-      MODULE MODD_OCEANH
-!     #################
-!
-!!****  *MODD_OCEAN* - declaration of variables used in ocean version
-!!
-!!    PURPOSE
-!!    -------
-!       Declarative module for the variables
-!!      at interface for OCEAN LES MESONH version including auto-coupling O-A LES
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      None 
-!!
-!!    AUTHOR
-!!    ------
-!!    JL Redelsperger LOPS
-!!   
-!!    MODIFICATIONS
-!!    -------------
-!!      Original 03/2021
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-!USE MODD_TYPE_DATE
-!
-IMPLICIT NONE
-!
-!*            fields for Sea Sfc FORCINGs
-!             ------------------
-!
-INTEGER,          SAVE                  :: NFRCLT     ! number of sea surface forcings PLUS 1
-INTEGER,          SAVE                  :: NINFRT     ! Interval in second between forcings
-!TYPE (DATE_TIME), SAVE, DIMENSION(:), ALLOCATABLE :: TFRCLT ! date/time of sea surface forcings
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE ::  XSSUFL,XSSVFL,XSSTFL,XSSOLA ! Time evol Flux U V T Solar_Rad at sea surface
-REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: XSSUFL_XY,XSSVFL_XY,XSSTFL_XY! XY flux shape
-REAL, SAVE, DIMENSION(:), ALLOCATABLE :: XSSUFL_T,XSSVFL_T,XSSTFL_T,XSSOLA_T ! given time forcing fluxes
-!
-END MODULE MODD_OCEANH
diff --git a/src/arome/aux/mode_argslist_ll.F90 b/src/arome/aux/mode_argslist_ll.F90
deleted file mode 100644
index f80bc15fb..000000000
--- a/src/arome/aux/mode_argslist_ll.F90
+++ /dev/null
@@ -1,44 +0,0 @@
-MODULE MODE_ARGSLIST_ll
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-CONTAINS
-
-!
-  SUBROUTINE CLEANLIST_ll(TPLIST)
-IMPLICIT NONE
-    TYPE(LIST_ll),  POINTER :: TPLIST ! List of fields
-    CALL ABORT
-  END SUBROUTINE CLEANLIST_ll
-!
-  SUBROUTINE ADD2DFIELD_ll(TPLIST, PFIELD, HNAME)
-IMPLICIT NONE
-          
-    TYPE(LIST_ll), POINTER         :: TPLIST   ! list of fields
-    REAL, DIMENSION(:,:), TARGET :: PFIELD   ! field to be added to the list
-  !                                              of fields
-    character(len=*), intent(in) :: HNAME ! Name of the field to be added
-  !
-   CALL ABORT  
-END SUBROUTINE ADD2DFIELD_ll
-!
-  SUBROUTINE ADD3DFIELD_ll(TPLIST, PFIELD, HNAME)
-IMPLICIT NONE
-          
-    TYPE(LIST_ll), POINTER         :: TPLIST   ! list of fields
-    REAL, DIMENSION(:,:,:), TARGET :: PFIELD   ! field to be added to the list
-  !                                              of fields
-    character(len=*), intent(in) :: HNAME ! Name of the field to be added
-  !
-   CALL ABORT  
-END SUBROUTINE ADD3DFIELD_ll
-!
-  SUBROUTINE ADD4DFIELD_ll(TPLIST, PFIELD, HNAME)
-IMPLICIT NONE
-
-    TYPE(LIST_ll), POINTER         :: TPLIST   ! list of fields
-    REAL, DIMENSION(:,:,:,:), TARGET :: PFIELD   ! field to be added to the list
-  !                                              of fields
-    character(len=*), intent(in) :: HNAME ! Name of the field to be added
-  !
-   CALL ABORT
-END SUBROUTINE ADD4DFIELD_ll
-END MODULE MODE_ARGSLIST_ll
diff --git a/src/arome/aux/mode_gather_ll.F90 b/src/arome/aux/mode_gather_ll.F90
deleted file mode 100644
index 88c37bbd9..000000000
--- a/src/arome/aux/mode_gather_ll.F90
+++ /dev/null
@@ -1,28 +0,0 @@
-MODULE MODE_GATHER_ll
-IMPLICIT NONE
-
-INTERFACE GATHERALL_FIELD_ll
-  MODULE PROCEDURE                               &
-       GATHERALL_X1, GATHERALL_X3
-END INTERFACE
-
-CONTAINS
-SUBROUTINE GATHERALL_X3(HDIR,PSEND,PRECV,KRESP)
-CHARACTER(LEN=*),      INTENT(IN) :: HDIR
-REAL,DIMENSION(:,:,:), INTENT(IN) :: PSEND
-REAL,DIMENSION(:,:,:), INTENT(INOUT):: PRECV
-INTEGER,               INTENT(INOUT):: KRESP
-
-CALL ABORT
-END SUBROUTINE GATHERALL_X3
-!
-SUBROUTINE GATHERALL_X1(HDIR,PSEND,PRECV,KRESP)
-CHARACTER(LEN=*),  INTENT(IN) :: HDIR
-REAL,DIMENSION(:), INTENT(IN) :: PSEND
-REAL,DIMENSION(:), INTENT(INOUT):: PRECV
-INTEGER,           INTENT(INOUT):: KRESP
-
-CALL ABORT
-END SUBROUTINE GATHERALL_X1
-!
-END MODULE MODE_GATHER_ll
diff --git a/src/arome/aux/mode_io_field_write.F90 b/src/arome/aux/mode_io_field_write.F90
deleted file mode 100644
index e1ea4aef4..000000000
--- a/src/arome/aux/mode_io_field_write.F90
+++ /dev/null
@@ -1,16 +0,0 @@
-MODULE MODE_IO_FIELD_WRITE
-USE MODD_IO,         ONLY: TFILEDATA
-USE MODD_FIELD, ONLY: TFIELDDATA
-CONTAINS
-SUBROUTINE IO_FIELD_WRITE(TPFILE,TZFIELD,PFIELD)
-    !
-    !*      0.1   Declarations of arguments
-    !
-    TYPE(TFILEDATA),           INTENT(IN) :: TPFILE
-    TYPE(TFIELDDATA), INTENT(IN)          :: TZFIELD
-    REAL, DIMENSION(:,:,:),    INTENT(IN) :: PFIELD   ! array containing the data field
-    !
-    CALL ABORT
-END SUBROUTINE IO_FIELD_WRITE
-END MODULE MODE_IO_FIELD_WRITE
-
diff --git a/src/arome/aux/mode_ll.F90 b/src/arome/aux/mode_ll.F90
index 58291ba77..790a3acac 100644
--- a/src/arome/aux/mode_ll.F90
+++ b/src/arome/aux/mode_ll.F90
@@ -1,39 +1,14 @@
 MODULE MODE_ll
-USE MODE_ARGSLIST_ll    
-USE MODE_TOOLS
 IMPLICIT NONE
 CONTAINS
   SUBROUTINE GET_INDICE_ll(KXOR, KYOR, KXEND, KYEND, KSIZE1, KSIZE2)
   USE MODD_PARAMETERS, ONLY : JPHEXT
   IMPLICIT NONE
-  INTEGER, INTENT(IN),OPTIONAL :: KSIZE1, KSIZE2
+  INTEGER, INTENT(IN) :: KSIZE1, KSIZE2
   INTEGER, INTENT(OUT) :: KXOR, KYOR, KXEND, KYEND
   KXOR=1+JPHEXT
   KYOR=1+JPHEXT
   KXEND=KSIZE1-JPHEXT
   KYEND=KSIZE2-JPHEXT
   END SUBROUTINE GET_INDICE_ll
-
-  SUBROUTINE UPDATE_HALO_ll(TPLIST, KINFO)
-  USE MODD_ARGSLIST_ll, ONLY : LIST_ll  
-  TYPE(LIST_ll), POINTER :: TPLIST ! pointer to the list of fields to be updated
-  INTEGER                :: KINFO  ! return status
-  CALL ABORT
-  END SUBROUTINE UPDATE_HALO_ll
-
-LOGICAL FUNCTION LNORTH_ll()
-  LNORTH_ll=.FALSE.
-END FUNCTION LNORTH_ll
-!
-LOGICAL FUNCTION LEAST_ll()
-  LEAST_ll=.FALSE.
-END FUNCTION LEAST_ll
-!
-LOGICAL FUNCTION LWEST_ll()
-  LWEST_ll=.FALSE.
-END FUNCTION LWEST_ll
-!
-LOGICAL FUNCTION LSOUTH_ll()
-  LSOUTH_ll=.FALSE.
-END FUNCTION LSOUTH_ll
 END MODULE MODE_ll
diff --git a/src/arome/aux/mode_mppdb.F90 b/src/arome/aux/mode_mppdb.F90
deleted file mode 100644
index 982b25d5d..000000000
--- a/src/arome/aux/mode_mppdb.F90
+++ /dev/null
@@ -1,18 +0,0 @@
-MODULE MODE_MPPDB
-IMPLICIT NONE
-REAL                             :: PRECISION = 1e-8 * 0.0
-CONTAINS  
-SUBROUTINE MPPDB_CHECK3DM(MESSAGE,PRECISION &
-                           ,PTAB1,PTAB2,PTAB3,PTAB4,PTAB5,PTAB6,PTAB7,PTAB8,PTAB9,PTAB10 &
-                           ,PTAB11,PTAB12,PTAB13,PTAB14,PTAB15,PTAB16,PTAB17,PTAB18,PTAB19,PTAB20 &
-                           )
-
-IMPLICIT NONE
-
-CHARACTER(lEN=*)                     :: MESSAGE
-REAL                                 :: PRECISION
-REAL, DIMENSION(:,:,:), OPTIONAL     :: PTAB1,PTAB2,PTAB3,PTAB4,PTAB5,PTAB6,PTAB7,PTAB8,PTAB9,PTAB10
-REAL, DIMENSION(:,:,:), OPTIONAL     :: PTAB11,PTAB12,PTAB13,PTAB14,PTAB15,PTAB16,PTAB17,PTAB18,PTAB19,PTAB20
-! DO NOTHING IN AROME
-END SUBROUTINE MPPDB_CHECK3DM
-END MODULE MODE_MPPDB
diff --git a/src/arome/aux/mode_sources_neg_correct.F90 b/src/arome/aux/mode_sources_neg_correct.F90
deleted file mode 100644
index 1b49a6e2b..000000000
--- a/src/arome/aux/mode_sources_neg_correct.F90
+++ /dev/null
@@ -1,19 +0,0 @@
-MODULE MODE_SOURCES_NEG_CORRECT
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE SOURCES_NEG_CORRECT(HCLOUD, HBUDNAME, KRR, PTSTEP, PPABST, &
-                              &PTHT, PRT, PRTHS, PRRS, PRSVS, PRHODJ)
-IMPLICIT NONE
-CHARACTER(LEN=*),            INTENT(IN)           :: HCLOUD   ! Kind of cloud parameterization
-CHARACTER(LEN=*),            INTENT(IN)           :: HBUDNAME ! Budget name
-INTEGER,                     INTENT(IN)           :: KRR      ! Number of moist variables
-REAL,                        INTENT(IN)           :: PTSTEP   ! Timestep
-REAL, DIMENSION(:, :, :),    INTENT(IN)           :: PPABST   ! Absolute pressure at time t
-REAL, DIMENSION(:, :, :),    INTENT(IN)           :: PTHT     ! Theta at time t
-REAL, DIMENSION(:, :, :, :), INTENT(IN)           :: PRT      ! Moist variables at time t
-REAL, DIMENSION(:, :, :),    INTENT(INOUT)        :: PRTHS    ! Source terms
-REAL, DIMENSION(:, :, :, :), INTENT(INOUT)        :: PRRS     ! Source terms
-REAL, DIMENSION(:, :, :, :), INTENT(INOUT)        :: PRSVS    ! Source terms
-REAL, DIMENSION(:, :, :),    INTENT(IN), OPTIONAL :: PRHODJ   ! Dry density * jacobian
-END SUBROUTINE SOURCES_NEG_CORRECT
-END MODULE MODE_SOURCES_NEG_CORRECT
diff --git a/src/arome/aux/mode_tridiag_w.F90 b/src/arome/aux/mode_tridiag_w.F90
deleted file mode 100644
index 6e5ce1304..000000000
--- a/src/arome/aux/mode_tridiag_w.F90
+++ /dev/null
@@ -1,3 +0,0 @@
-MODULE MODE_TRIDIAG_W
-! Empty module for PHYEX, used in TURB 3D
-END MODULE MODE_TRIDIAG_W
diff --git a/src/arome/aux/modi_gradient_m.F90 b/src/arome/aux/modi_gradient_m.F90
index ed35df93a..82f5e3c89 100644
--- a/src/arome/aux/modi_gradient_m.F90
+++ b/src/arome/aux/modi_gradient_m.F90
@@ -6,8 +6,8 @@ INTERFACE
 !
 !
 FUNCTION GX_M_M(PA,PDXX,PDZZ,PDZX, KKA, KKU, KL)      RESULT(PGX_M_M)
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the mass point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -19,8 +19,8 @@ END FUNCTION GX_M_M
 !
 !
 FUNCTION GY_M_M(PA,PDYY,PDZZ,PDZY, KKA, KKU, KL)      RESULT(PGY_M_M)
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the mass point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDYY    ! metric coefficient dyy
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -33,8 +33,8 @@ END FUNCTION GY_M_M
 !
 FUNCTION GZ_M_M(PA,PDZZ, KKA, KKU, KL)      RESULT(PGZ_M_M)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the mass point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 !
@@ -42,7 +42,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_M_M ! result mass point
 !
 END FUNCTION GZ_M_M
 !
-      FUNCTION GX_M_U(KKA, KKU, KL,PY,PDXX,PDZZ,PDZX) RESULT(PGX_M_U)
+      FUNCTION GX_M_U(PY,PDXX,PDZZ,PDZX, KKA, KKU, KL) RESULT(PGX_M_U)
 !  
 IMPLICIT NONE
 !
@@ -59,7 +59,7 @@ REAL, DIMENSION(SIZE(PY,1),SIZE(PY,2),SIZE(PY,3)) :: PGX_M_U  ! result at flux
 END FUNCTION GX_M_U
 !
 !
-      FUNCTION GY_M_V(KKA, KKU, KL,PY,PDYY,PDZZ,PDZY) RESULT(PGY_M_V)
+      FUNCTION GY_M_V(PY,PDYY,PDZZ,PDZY, KKA, KKU, KL) RESULT(PGY_M_V)
 !
 IMPLICIT NONE
 !
@@ -75,7 +75,7 @@ REAL, DIMENSION(SIZE(PY,1),SIZE(PY,2),SIZE(PY,3)) :: PGY_M_V  ! result at flux
                                                               ! side
 END FUNCTION GY_M_V
 !
-      FUNCTION GZ_M_W(KKA, KKU, KL,PY,PDZZ) RESULT(PGZ_M_W)
+      FUNCTION GZ_M_W(PY,PDZZ, KKA, KKU, KL) RESULT(PGZ_M_W)
 !  
 IMPLICIT NONE
 !
diff --git a/src/arome/aux/modi_gradient_u.F90 b/src/arome/aux/modi_gradient_u.F90
index 519e5cc81..634310304 100644
--- a/src/arome/aux/modi_gradient_u.F90
+++ b/src/arome/aux/modi_gradient_u.F90
@@ -6,8 +6,8 @@ INTERFACE
 !
 !     
 FUNCTION GX_U_M(PA,PDXX,PDZZ,PDZX, KKA, KKU, KL)      RESULT(PGX_U_M)
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the U point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -20,8 +20,8 @@ END FUNCTION GX_U_M
 !     
 FUNCTION GY_U_UV(PA,PDYY,PDZZ,PDZY, KKA, KKU, KL)      RESULT(PGY_U_UV)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the U point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDYY    ! metric coefficient dyy
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -34,8 +34,8 @@ END FUNCTION GY_U_UV
 !     
 FUNCTION GZ_U_UW(PA,PDZZ, KKA, KKU, KL)      RESULT(PGZ_U_UW)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the U point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 !
diff --git a/src/arome/aux/modi_gradient_v.F90 b/src/arome/aux/modi_gradient_v.F90
index d1ff4a08d..eec4d2fe9 100644
--- a/src/arome/aux/modi_gradient_v.F90
+++ b/src/arome/aux/modi_gradient_v.F90
@@ -7,8 +7,8 @@ INTERFACE
 !           
 FUNCTION GY_V_M(PA,PDYY,PDZZ,PDZY, KKA, KKU, KL)      RESULT(PGY_V_M)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the V point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDYY    ! metric coefficient dyy
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -20,8 +20,8 @@ END FUNCTION GY_V_M
 !           
 FUNCTION GX_V_UV(PA,PDXX,PDZZ,PDZX, KKA, KKU, KL)      RESULT(PGX_V_UV)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the V point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -34,8 +34,8 @@ END FUNCTION GX_V_UV
 !           
 FUNCTION GZ_V_VW(PA,PDZZ, KKA, KKU, KL)      RESULT(PGZ_V_VW)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the V point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 !
diff --git a/src/arome/aux/modi_gradient_w.F90 b/src/arome/aux/modi_gradient_w.F90
index 48d924d53..759319e3d 100644
--- a/src/arome/aux/modi_gradient_w.F90
+++ b/src/arome/aux/modi_gradient_w.F90
@@ -7,8 +7,8 @@ INTERFACE
 !            
 FUNCTION GZ_W_M(PA,PDZZ, KKA, KKU, KL)      RESULT(PGZ_W_M)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the W point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
 !
@@ -18,8 +18,8 @@ END FUNCTION GZ_W_M
 !            
 FUNCTION GX_W_UW(PA,PDXX,PDZZ,PDZX, KKA, KKU, KL)      RESULT(PGX_W_UW)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the W point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
@@ -32,8 +32,8 @@ END FUNCTION GX_W_UW
 !            
 FUNCTION GY_W_VW(PA,PDXX,PDZZ,PDZX, KKA, KKU, KL)      RESULT(PGY_W_VW)
 !
-INTEGER,              INTENT(IN),OPTIONAL     :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)     :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)     :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PA      ! variable at the W point
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDXX    ! metric coefficient dxx
 REAL, DIMENSION(:,:,:),  INTENT(IN)  :: PDZZ    ! metric coefficient dzz
diff --git a/src/arome/aux/modi_second_mnh.F90 b/src/arome/aux/modi_second_mnh.F90
deleted file mode 100644
index aaa03bd45..000000000
--- a/src/arome/aux/modi_second_mnh.F90
+++ /dev/null
@@ -1,7 +0,0 @@
-MODULE MODI_SECOND_MNH
-INTERFACE
-SUBROUTINE SECOND_MNH(XT)
-REAL           :: XT
-END SUBROUTINE SECOND_MNH
-END INTERFACE
-END MODULE MODI_SECOND_MNH
diff --git a/src/arome/aux/modi_shuman.F90 b/src/arome/aux/modi_shuman.F90
index d8ffd80a1..8bc69a410 100644
--- a/src/arome/aux/modi_shuman.F90
+++ b/src/arome/aux/modi_shuman.F90
@@ -35,16 +35,16 @@ END FUNCTION DYM
 FUNCTION DZF(PA,KKA,KKU,KL)  RESULT(PDZF)
 REAL, DIMENSION(:,:,:), INTENT(IN)                :: PA     ! variable at flux
                                                             !  side
-INTEGER,              INTENT(IN),OPTIONAL         :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL         :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)                  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)                  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZF   ! result at mass localization 
 END FUNCTION DZF
 !
 FUNCTION DZM(PA,KKA,KKU,KL)  RESULT(PDZM)
 REAL, DIMENSION(:,:,:), INTENT(IN)                :: PA     ! variable at mass
                                                             ! localization
-INTEGER,              INTENT(IN),OPTIONAL         :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL         :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)                  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)                  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZM   ! result at flux side
 END FUNCTION DZM
 !
@@ -74,16 +74,16 @@ END  FUNCTION MYM
 !
 FUNCTION MZF(PA,KKA,KKU,KL)  RESULT(PMZF)
 REAL, DIMENSION(:,:,:), INTENT(IN)                :: PA     ! variable at flux side
-INTEGER,              INTENT(IN),OPTIONAL         :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL         :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)                  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)                  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZF   ! result at mass
                                                             ! localization 
 END FUNCTION MZF
 !
 FUNCTION MZM(PA,KKA,KKU,KL)  RESULT(PMZM)
 REAL, DIMENSION(:,:,:), INTENT(IN)                :: PA     ! variable at mass localization
-INTEGER,              INTENT(IN),OPTIONAL         :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL         :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)                  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)                  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZM   ! result at flux localization 
 END FUNCTION MZM
 !
diff --git a/src/arome/aux/shuman.F90 b/src/arome/aux/shuman.F90
index f8949e00d..47109f11e 100644
--- a/src/arome/aux/shuman.F90
+++ b/src/arome/aux/shuman.F90
@@ -275,6 +275,7 @@ PMYF=PA
 !  PMYF(:,JJ,:) = 0.5*( PA(:,JJ,:)+PA(:,JJ+1,:) )
 !END DO
 !
+!PMYF(:,IJU,:)    = PMYF(:,2*JPHEXT,:)
 !
 !-------------------------------------------------------------------------------
 !
@@ -428,8 +429,8 @@ IMPLICIT NONE
 !              ------------------------------------
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)                :: PA     ! variable at flux side
-INTEGER,              INTENT(IN),OPTIONAL         :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL         :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)                  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)                  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZF   ! result at mass
                                                             ! localization
 !
@@ -512,8 +513,8 @@ IMPLICIT NONE
 !              ------------------------------------
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)                :: PA     ! variable at mass localization
-INTEGER,              INTENT(IN),OPTIONAL         :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL         :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)                  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)                  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PMZM   ! result at flux localization
 !
 !*       0.2   Declarations of local variables
@@ -712,7 +713,6 @@ END DO
 !
 PDXM(1,:,:)    =  PDXM(IIU-2*JPHEXT+1,:,:)
 !
-CALL ABORT ! AROME SHOULD NOT CALLED HORIZONTAL FINITE DIFFERENCE
 !-------------------------------------------------------------------------------
 !
 IF (LHOOK) CALL DR_HOOK('DXM',1,ZHOOK_HANDLE)
@@ -803,8 +803,6 @@ END DO
 !
 !PDYF(:,IJU,:)    = PDYF(:,2*JPHEXT,:)
 !
-CALL ABORT ! AROME SHOULD NOT CALLED HORIZONTAL FINITE DIFFERENCE
-
 !-------------------------------------------------------------------------------
 !
 IF (LHOOK) CALL DR_HOOK('DYF',1,ZHOOK_HANDLE)
@@ -894,7 +892,6 @@ DO JJ=2,IJU
 END DO
 !
 PDYM(:,1,:)    =  PDYM(:,IJU-2*JPHEXT+1,:)
-CALL ABORT ! AROME SHOULD NOT CALLED HORIZONTAL FINITE DIFFERENCE
 !
 !-------------------------------------------------------------------------------
 !
@@ -955,8 +952,8 @@ IMPLICIT NONE
 !              ------------------------------------
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)                :: PA     ! variable at flux side
-INTEGER,              INTENT(IN),OPTIONAL         :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL        :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)                  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)                  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZF   ! result at mass
                                                             ! localization
 !
@@ -1039,8 +1036,8 @@ IMPLICIT NONE
 !              ------------------------------------
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)                :: PA     ! variable at mass localization
-INTEGER,              INTENT(IN),OPTIONAL         :: KKA, KKU ! near ground and uppest atmosphere array indexes
-INTEGER,              INTENT(IN),OPTIONAL         :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,              INTENT(IN)                  :: KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,              INTENT(IN)                  :: KL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
 REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PDZM   ! result at flux
                                                             ! side
 !
diff --git a/src/arome/ext/aro_turb_mnh.F90 b/src/arome/ext/aro_turb_mnh.F90
index db3aea281..caee9cfa6 100644
--- a/src/arome/ext/aro_turb_mnh.F90
+++ b/src/arome/ext/aro_turb_mnh.F90
@@ -71,8 +71,7 @@
 USE MODD_CONF
 USE MODD_CST
 USE MODD_PARAMETERS
-USE MODD_IO, ONLY: TFILEDATA
-USE MODD_BUDGET, ONLY: NBUDGET_RI, TBUDGETDATA
+
 !
 USE MODI_TURB
 !
@@ -171,13 +170,11 @@ LOGICAL , INTENT(IN)                            ::  OSUBG_COND   ! switch
 REAL, DIMENSION(KLON,1,KLEV+2),  INTENT(OUT)   :: PDP, PTP, PTPMF, PTDIFF, PTDISS
 !                                                !for TKE DDH budgets
 !
-TYPE(TYP_DDH), INTENT(INOUT), TARGET   :: YDDDH
-TYPE(TLDDH),   INTENT(IN), TARGET      :: YDLDDH
-TYPE(TMDDH),   INTENT(IN), TARGET      :: YDMDDH
+TYPE(TYP_DDH), INTENT(INOUT)   :: YDDDH
+TYPE(TLDDH),   INTENT(IN)      :: YDLDDH
+TYPE(TMDDH),   INTENT(IN)      :: YDMDDH
 !
 !
-TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RI) :: YLBUDGET !NBUDGET_RI is the one with the highest number needed for turb
-TYPE(TFILEDATA) :: ZTFILE !I/O for MesoNH
 !*       0.2   Declarations of local variables :
 !
 INTEGER :: JRR,JSV       ! Loop index for the moist and scalar variables
@@ -201,6 +198,8 @@ CHARACTER(LEN=4),DIMENSION(2)  :: HLBCX, HLBCY  ! X- and Y-direc LBC
 
 INTEGER       :: ISPLIT        ! number of time-splitting
 
+LOGICAL       ::  OCLOSE_OUT   ! Conditional closure of
+                                                   ! the OUTPUT FM-file
 LOGICAL       ::  OTURB_FLX    ! switch to write the
                                ! turbulent fluxes in the syncronous FM-file
 LOGICAL       ::  OTURB_DIAG   ! switch to write some
@@ -212,6 +211,11 @@ CHARACTER(LEN=4)   ::  HTURBDIM     ! dimensionality of the
 CHARACTER(LEN=4)   ::  HTURBLEN     ! kind of mixing length
 
 REAL          ::  ZIMPL        ! degree of implicitness
+
+CHARACTER(LEN=4)   ::  HFMFILE      ! Name of the output
+                                    ! FM-file
+CHARACTER(LEN=4)   ::  HLUOUT       ! Output-listing name for
+                                    ! model n
 !
 REAL, DIMENSION(KLON,1,KLEV+2)   :: ZDXX,ZDYY,ZDZZ,ZDZX,ZDZY
                                         ! metric coefficients
@@ -260,9 +264,6 @@ IKE=KKU-JPVEXT_TURB*KKL
 ! Numero du modele si grid nestind, toujours egal a 1
 IMI=1
 
-! Fichier I/O pour MesoNH (non-utilise dans AROME)
-ZTFILE%LOPENED=.FALSE.
-
 ! Type de condition � la limite. En 1D, sans importance. A etudier en 3D.
 HLBCX(:)='CYCL'
 HLBCY(:)='CYCL'
@@ -271,6 +272,9 @@ HLBCY(:)='CYCL'
 ISPLIT=1
 
 ! pour ecriture et diagnostic dans mesoNH, � priori les switches toujours � .F.
+OCLOSE_OUT=.FALSE.
+HFMFILE=' '
+HLUOUT= ' '
 OTURB_FLX=.FALSE.
 OTURB_DIAG=.FALSE.
 
@@ -408,34 +412,27 @@ ZCEI_MIN=0.0
 ZCEI=0.0
 ZCOEF_AMPL_SAT=0.0
 
-DO JRR=1, NBUDGET_RI
-  YLBUDGET(JRR)%NBUDGET=JRR
-  YLBUDGET(JRR)%YDDDH=>YDDDH
-  YLBUDGET(JRR)%YDLDDH=>YDLDDH
-  YLBUDGET(JRR)%YDMDDH=>YDMDDH
-ENDDO
-
+CL=HINST_SFU
 CALL TURB (KLEV+2,1,KKL,IMI, KRR, KRRL, KRRI, HLBCX, HLBCY, ISPLIT,IMI, &
-   & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
-   & HTURBDIM,HTURBLEN,'NONE','NONE',           &
-   & ZIMPL,                                    &
-   & 2*PTSTEP,ZTFILE,                                      &
-   & ZDXX,ZDYY,ZDZZ,ZDZX,ZDZY,ZZZ,          &
+   & OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
+   & HTURBDIM,HTURBLEN,'NONE','NONE', CL,           &
+   & HMF_UPDRAFT,ZIMPL,                                    &
+   & 2*PTSTEP, 2*PTSTEP, 2*PTSTEP,                         &
+   & HFMFILE,HLUOUT,ZDXX,ZDYY,ZDZZ,ZDZX,ZDZY,ZZZ,          &
    & ZDIRCOSXW,ZDIRCOSYW,ZDIRCOSZW,ZCOSSLOPE,ZSINSLOPE,    &
-   & PRHODJ,PTHVREF,                              &
+   & PRHODJ,PTHVREF,PRHODREF,                              &
    & PSFTH,PSFRV,PSFSV,PSFU,PSFV,                          &
    & PPABSM,PUM,PVM,PWM,PTKEM,ZSVM,PSRCM,                  &
    & PLENGTHM,PLENGTHH,MFMOIST,                            &
    & ZBL_DEPTH,ZSBL_DEPTH,                                 &
-   & ZCEI,ZCEI_MIN,ZCEI_MAX,ZCOEF_AMPL_SAT,    &
+   & PUM,PVM,PWM,ZCEI,ZCEI_MIN,ZCEI_MAX,ZCOEF_AMPL_SAT,    &
    & PTHM,ZRM, &
    & PRUS,PRVS,PRWS,PRTHS,ZRRS,ZRSVS,PRTKES_OUT,         &
-   & PSIGS,                                         &
+   & ZHGRAD,PSIGS,                                         &
    & PDRUS_TURB,PDRVS_TURB,                                &
    & PDRTHLS_TURB,PDRRTS_TURB,ZDRSVS_TURB,                 &
-   & PFLXZTHVMF,ZWTH,ZWRC,ZWSV,PDP,PTP,PTPMF,PTDIFF,PTDISS,&
-   & YLBUDGET, KBUDGETS=SIZE(YLBUDGET),                    &
-   & PEDR=PEDR)
+  & PFLXZTHVMF,ZWTH,ZWRC,ZWSV,PDP,PTP,PTPMF,PTDIFF,    &
+  & PTDISS,PEDR,YDDDH,YDLDDH,YDMDDH)
 !
 !
 !------------------------------------------------------------------------------
diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files
index 155b80f82..f4443eaf9 100644
--- a/src/arome/gmkpack_ignored_files
+++ b/src/arome/gmkpack_ignored_files
@@ -129,29 +129,3 @@ phyex/turb/modi_compute_updraft_rhcj10.F90
 phyex/turb/compute_updraft_rhcj10.F90
 phyex/turb/modi_compute_updraft.F90
 phyex/turb/compute_updraft.F90
-phyex/turb/tke_eps_sources.F90
-phyex/turb/turb_ver.F90
-phyex/turb/prandtl.F90
-phyex/turb/turb_ver_thermo_flux.F90
-phyex/turb/turb_ver_thermo_corr.F90
-phyex/turb/turb_ver_dyn_flux.F90
-phyex/turb/turb_ver_sv_flux.F90
-phyex/turb/turb_ver_sv_corr.F90
-phyex/turb/tm06.F90
-phyex/turb/tm06_h.F90
-phyex/turb/tridiag.F90
-phyex/turb/tridiag_wind.F90
-phyex/turb/tridiag_thermo.F90
-phyex/turb/tridiag_tke.F90
-phyex/turb/tridiag_massflux.F90
-phyex/turb/bl89.F90
-phyex/turb/etheta.F90
-phyex/turb/emoist.F90
-phyex/turb/rmc01.F90
-phyex/turb/sbl_depth.F90
-phyex/turb/th_r_from_thl_rt_1d.F90
-phyex/turb/th_r_from_thl_rt_2d.F90
-phyex/turb/th_r_from_thl_rt_3d.F90
-phyex/turb/thl_rt_from_th_r_mf.F90
-phyex/turb/bl_depth_diag_3d.F90
-phyex/turb/bl_depth_diag_1d.F90
diff --git a/src/arome/micro/modd_parameters.F90 b/src/arome/micro/modd_parameters.F90
index 931c6fb58..4a1ea9860 100644
--- a/src/arome/micro/modd_parameters.F90
+++ b/src/arome/micro/modd_parameters.F90
@@ -60,21 +60,7 @@ INTEGER, PARAMETER :: JPDUMMY  = 20   ! Size of dummy array
 !
 INTEGER, PARAMETER :: JPOUTMAX = 192 ! Maximum allowed number of OUTput files
 !
-INTEGER, PARAMETER :: NBUNAMELGTMAX  = 32  ! Maximum length of a budget name
-INTEGER, PARAMETER :: NCOMMENTLGTMAX = 100 ! Maximum length of a comment
-INTEGER, PARAMETER :: NMNHNAMELGTMAX = 32  ! Maximum length of a MNH variable name
-INTEGER, PARAMETER :: NSTDNAMELGTMAX = 64  ! Maximum length of the standard name of a variable (CF convention)
-!
-INTEGER, PARAMETER :: NDIRNAMELGTMAX = 512 ! Maximum length of a directory name
-INTEGER, PARAMETER :: NFILENAMELGTMAX = 32 ! Maximum length of a file name (must be at least NFILENAMELGTMAXLFI)
-INTEGER, PARAMETER :: NFILENAMELGTMAXLFI = 28 ! Maximum length of a file name in LFI file (this is necessary
-                                              ! to keep backward compatibility), MUST BE 28
-!
-INTEGER, PARAMETER :: NLFIMAXCOMMENTLENGTH = 100 ! Length of comments in LFI files
-!
 INTEGER, PARAMETER :: JPLIMACCNMAX = 10 ! Maximum allowed number of CCN modes in LIMA
 INTEGER, PARAMETER :: JPLIMAIFNMAX = 10 ! Maximum allowed number of IFN modes in LIMA
 !
-INTEGER, PARAMETER :: NGRIDUNKNOWN = -1 ! Unknown Arakawa grid number
-!
 END MODULE MODD_PARAMETERS
diff --git a/src/arome/micro/modd_refaro.F90 b/src/arome/micro/modd_refaro.F90
index c616ef13d..5d04ef439 100644
--- a/src/arome/micro/modd_refaro.F90
+++ b/src/arome/micro/modd_refaro.F90
@@ -38,6 +38,5 @@ IMPLICIT NONE
 !  set to constant value 300k for AROME
 REAL,SAVE, DIMENSION(2) :: XTHVREFZ=300.     ! Thetav(z) for reference
                                              ! state without orography
-LOGICAL, SAVE   ::LCOUPLES ! AUTOCOUPLED ATMS-OCEAN LES VERSION
 !
 END MODULE MODD_REF
diff --git a/src/arome/turb/bl_depth_diag_1d.F90 b/src/arome/turb/bl_depth_diag_1d.F90
new file mode 100644
index 000000000..c477ca8ef
--- /dev/null
+++ b/src/arome/turb/bl_depth_diag_1d.F90
@@ -0,0 +1,38 @@
+!     ######spl
+FUNCTION BL_DEPTH_DIAG_1D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF)
+USE PARKIND1, ONLY : JPRB
+USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+!
+USE MODI_BL_DEPTH_DIAG_3D
+IMPLICIT NONE
+!
+INTEGER,                INTENT(IN)           :: KKB          ! bottom point
+INTEGER,                INTENT(IN)           :: KKE          ! top point
+REAL,                   INTENT(IN)           :: PSURF        ! surface flux
+REAL,                   INTENT(IN)           :: PZS          ! orography
+REAL, DIMENSION(:),     INTENT(IN)           :: PFLUX        ! flux
+REAL, DIMENSION(:),     INTENT(IN)           :: PZZ          ! altitude of flux points
+REAL,                   INTENT(IN)           :: PFTOP_O_FSURF! Flux at BL top / Surface flux
+REAL                                         :: BL_DEPTH_DIAG_1D
+!
+REAL, DIMENSION(1,1)             :: ZSURF
+REAL, DIMENSION(1,1)             :: ZZS
+REAL, DIMENSION(1,1,SIZE(PFLUX)) :: ZFLUX
+REAL, DIMENSION(1,1,SIZE(PZZ))   :: ZZZ
+REAL, DIMENSION(1,1)             :: ZBL_DEPTH_DIAG
+!
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
+IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_1D',0,ZHOOK_HANDLE)
+ZSURF        = PSURF
+ZZS          = PZS
+ZFLUX(1,1,:) = PFLUX(:)
+ZZZ  (1,1,:) = PZZ  (:)
+!
+ZBL_DEPTH_DIAG = BL_DEPTH_DIAG_3D(KKB,KKE,ZSURF,ZZS,ZFLUX,ZZZ,PFTOP_O_FSURF)
+!
+BL_DEPTH_DIAG_1D = ZBL_DEPTH_DIAG(1,1)
+!
+!-------------------------------------------------------------------------------
+!
+IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_1D',1,ZHOOK_HANDLE)
+END FUNCTION BL_DEPTH_DIAG_1D
diff --git a/src/common/turb/mode_bl_depth_diag.F90 b/src/arome/turb/bl_depth_diag_3d.F90
similarity index 57%
rename from src/common/turb/mode_bl_depth_diag.F90
rename to src/arome/turb/bl_depth_diag_3d.F90
index 3cf56530a..78ce7c72a 100644
--- a/src/common/turb/mode_bl_depth_diag.F90
+++ b/src/arome/turb/bl_depth_diag_3d.F90
@@ -1,16 +1,4 @@
-!MNH_LIC Copyright 1994-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.
-MODULE MODE_BL_DEPTH_DIAG
-!
-INTERFACE BL_DEPTH_DIAG  
-      MODULE PROCEDURE BL_DEPTH_DIAG_3D
-      MODULE PROCEDURE BL_DEPTH_DIAG_1D
-END INTERFACE
-!
-CONTAINS
-!
+!     ######spl
 FUNCTION BL_DEPTH_DIAG_3D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF)
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -103,41 +91,3 @@ BL_DEPTH_DIAG_3D(:,:) = BL_DEPTH_DIAG_3D(:,:) / (1. - PFTOP_O_FSURF)
 !
 IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_3D',1,ZHOOK_HANDLE)
 END FUNCTION BL_DEPTH_DIAG_3D
-!
-FUNCTION BL_DEPTH_DIAG_1D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF)
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
-IMPLICIT NONE
-!
-INTEGER,                INTENT(IN)           :: KKB          ! bottom point
-INTEGER,                INTENT(IN)           :: KKE          ! top point
-REAL,                   INTENT(IN)           :: PSURF        ! surface flux
-REAL,                   INTENT(IN)           :: PZS          ! orography
-REAL, DIMENSION(:),     INTENT(IN)           :: PFLUX        ! flux
-REAL, DIMENSION(:),     INTENT(IN)           :: PZZ          ! altitude of flux points
-REAL,                   INTENT(IN)           :: PFTOP_O_FSURF! Flux at BL top / Surface flux
-REAL                                         :: BL_DEPTH_DIAG_1D
-!
-REAL, DIMENSION(1,1)             :: ZSURF
-REAL, DIMENSION(1,1)             :: ZZS
-REAL, DIMENSION(1,1,SIZE(PFLUX)) :: ZFLUX
-REAL, DIMENSION(1,1,SIZE(PZZ))   :: ZZZ
-REAL, DIMENSION(1,1)             :: ZBL_DEPTH_DIAG
-!
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_1D',0,ZHOOK_HANDLE)
-ZSURF        = PSURF
-ZZS          = PZS
-ZFLUX(1,1,:) = PFLUX(:)
-ZZZ  (1,1,:) = PZZ  (:)
-!
-ZBL_DEPTH_DIAG = BL_DEPTH_DIAG_3D(KKB,KKE,ZSURF,ZZS,ZFLUX,ZZZ,PFTOP_O_FSURF)
-!
-BL_DEPTH_DIAG_1D = ZBL_DEPTH_DIAG(1,1)
-!
-!-------------------------------------------------------------------------------
-!
-IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_1D',1,ZHOOK_HANDLE)
-END FUNCTION BL_DEPTH_DIAG_1D
-END MODULE MODE_BL_DEPTH_DIAG
diff --git a/src/arome/turb/modd_turbn.F90 b/src/arome/turb/modd_turbn.F90
new file mode 100644
index 000000000..3d11a7b59
--- /dev/null
+++ b/src/arome/turb/modd_turbn.F90
@@ -0,0 +1,3 @@
+MODULE MODD_TURB_n
+ CHARACTER (LEN=4), SAVE  :: CTURBLEN='BL89'
+ENDMODULE MODD_TURB_n
diff --git a/src/arome/turb/mode_compute_updraft_rhcj10.F90 b/src/arome/turb/mode_compute_updraft_rhcj10.F90
index b88864cc2..bac5e7f13 100644
--- a/src/arome/turb/mode_compute_updraft_rhcj10.F90
+++ b/src/arome/turb/mode_compute_updraft_rhcj10.F90
@@ -63,7 +63,7 @@ SUBROUTINE COMPUTE_UPDRAFT_RHCJ10(KKA,KKB,KKE,KKU,KKL,HFRAC_ICE,       &
 USE MODD_CST
 USE MODD_PARAM_MFSHALL_n
 USE MODD_TURB_n, ONLY : CTURBLEN
-USE MODE_TH_R_FROM_THL_RT_1D, ONLY: TH_R_FROM_THL_RT_1D
+USE MODI_TH_R_FROM_THL_RT_1D
 USE MODI_SHUMAN_MF, ONLY: MZF_MF, MZM_MF, GZ_M_W_MF
 
 USE MODE_COMPUTE_BL89_ML, ONLY: COMPUTE_BL89_ML
diff --git a/src/common/turb/mode_prandtl.F90 b/src/arome/turb/mode_prandtl.F90
similarity index 77%
rename from src/common/turb/mode_prandtl.F90
rename to src/arome/turb/mode_prandtl.F90
index 41c5a4845..d460f8e0b 100644
--- a/src/common/turb/mode_prandtl.F90
+++ b/src/arome/turb/mode_prandtl.F90
@@ -1,9 +1,4 @@
-!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.
-!-----------------------------------------------------------------
-!    #################### 
+!     ######spl
      MODULE MODE_PRANDTL
      USE PARKIND1, ONLY : JPRB
      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -11,7 +6,6 @@
 !
 !* modification 08/2010  V. Masson  smoothing of the discontinuity in functions 
 !                                   used for implicitation of exchange coefficients
-!               05/2020   V. Masson and C. Lac : bug in D_PHI3DTDZ2_O_DDTDZ
 !
 USE MODD_CTURB,      ONLY : XCTV, XCSHF, XCTD, XPHI_LIM, XCPR3, XCPR4, XCPR5
 USE MODD_PARAMETERS, ONLY : JPVEXT_TURB
@@ -21,539 +15,6 @@ IMPLICIT NONE
 !----------------------------------------------------------------------------
 CONTAINS
 !----------------------------------------------------------------------------
-      SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OTURB_DIAG,       &
-                         HTURBDIM,                             &
-                         TPFILE,                               &
-                         PDXX,PDYY,PDZZ,PDZX,PDZY,             &
-                         PTHVREF,PLOCPEXNM,PATHETA,PAMOIST,    &
-                         PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, &
-                         PREDTH1,PREDR1,                       &
-                         PRED2TH3, PRED2R3, PRED2THR3,         &
-                         PREDS1,PRED2THS3, PRED2RS3,           &
-                         PBLL_O_E,                             &
-                         PETHETA, PEMOIST                      )
-!     ###########################################################
-!
-!
-!!****  *PRANDTL* - routine to compute the Prandtl turbulent numbers
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to compute the Redelsperger 
-!     numbers and then get the turbulent Prandtl and Schmidt numbers:
-!       * for the heat fluxes     - PHI3 = 1/ Prandtl
-!       * for the moisture fluxes - PSI3 = 1/ Schmidt
-!
-!!**  METHOD
-!!    ------
-!!    The following steps are performed:
-!!
-!!     1 - default values of 1 are taken for phi3 and psi3 and different masks
-!!       are defined depending on the presence of turbulence, stratification and
-!!       humidity. The 1D Redelsperger numbers are computed  
-!!         * ZREDTH1 : (g / THVREF ) (LT**2 / TKE ) ETHETA (D Theta / Dz)   
-!!         * ZREDR1  : (g / THVREF ) (LT**2 / TKE ) EMOIST (D TW    / Dz)  
-!!     2 - 3D Redelsperger numbers are computed only for turbulent 
-!!       grid points where  ZREDTH1 or ZREDR1 are > 0.
-!!     3 - PHI3 is  computed only for turbulent grid points where ZREDTH1 > 0
-!!      (turbulent thermally stratified points)
-!!     4 - PSI3 is computed only for turbulent grid points where ZREDR1 > 0
-!!      (turbulent moist points)
-!!    
-!!
-!!    EXTERNAL
-!!    --------
-!!      FUNCTIONs ETHETA and EMOIST  :  
-!!            allows to compute the coefficients 
-!!            for the turbulent correlation between any variable
-!!            and the virtual potential temperature, of its correlations 
-!!            with the conservative potential temperature and the humidity 
-!!            conservative variable:
-!!            -------              -------              -------
-!!            A' Thv'  =  ETHETA   A' Thl'  +  EMOIST   A' Rnp'  
-!!
-!!      GX_M_M, GY_M_M, GZ_M_M :  Cartesian gradient operators
-!!      MZM : Shuman function (mean operator in the z direction)
-!!      Module MODI_ETHETA    : interface module for ETHETA
-!!      Module MODI_EMOIST    : interface module for EMOIST
-!!      Module MODI_SHUMAN    : interface module for Shuman operators
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_CST : contains physical constants
-!!           XG         : gravity constant
-!!
-!!      Module MODD_CTURB: contains the set of constants for
-!!                        the turbulence scheme
-!!       XCTV,XCPR2    : constants for the turbulent prandtl numbers
-!!       XTKEMIN        : minimum value allowed for the TKE
-!!
-!!      Module MODD_PARAMETERS 
-!!       JPVEXT_TURB         : number of vertical marginal points
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book 2 of documentation (routine PRANDTL)
-!!      Book 1 of documentation (Chapter: Turbulence)
-!!
-!!    AUTHOR
-!!    ------
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         18/10/94
-!!      Modifications: Feb 14, 1995 (J.Cuxart and J.Stein) 
-!!                                  Doctorization and Optimization
-!!      Modifications: March 21, 1995 (J.M. Carriere) 
-!!                                  Introduction of cloud water
-!!      Modifications: March 21, 1995 (J. Cuxart and J.Stein)
-!!                                  Phi3 and Psi3 at w point + cleaning
-!!      Modifications: July 2, 1995 (J.Cuxart and Ph.Bougeault)
-!!                         change the value of Phi3 and Psi3 if negative
-!!      Modifications: Sept 20, 1995 (J. Stein, J. Cuxart, J.L. Redelsperger)
-!!                         remove the Where + use REDTH1+REDR1 for the tests
-!!      Modifications: October 10, 1995 (J. Cuxart and J.Stein)
-!!                         Psi3 for tPREDS1he scalar variables
-!!      Modifications: February 27, 1996 (J.Stein) optimization
-!!      Modifications: June 15, 1996 (P.Jabouille) return to the previous
-!!                          computation of Phi3 and Psi3
-!!      Modifications: October 10, 1996 (J. Stein) change the temporal
-!!                          discretization
-!!      Modifications: May 23, 1997 (J. Stein) bug in 3D Redels number at ground
-!!                                             with orography
-!!      Modifications: Feb 20, 1998 (J. Stein) bug in all the 3D cases due to
-!!                                             the use of ZW1 instead of ZW2
-!!                     Feb 20, 2003 (JP Pinty) Add PFRAC_ICE
-!!                     July    2005 (Tomas, Masson) implicitation of PHI3 and PSI3
-!!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
-!!                                              change of YCOMMENT
-!!                     2012-02 Y. Seity,  add possibility to run with reversed 
-!!                                               vertical levels
-!!      Modifications: July 2015    (Wim de Rooy) LHARAT (Racmo turbulence) switch
-!!                     2017-09 J.Escobar, use epsilon XMNH_TINY_12 for R*4 
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! JL Redelsperger 03/2021 : adding Ocean case for temperature only 
-!! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-!
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_DYN_n,          ONLY: LOCEAN
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_PARAMETERS
-!
-USE MODI_GRADIENT_M
-USE MODE_EMOIST, ONLY: EMOIST
-USE MODE_ETHETA, ONLY: ETHETA
-USE MODI_SHUMAN, ONLY: MZM
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
-INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
-INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
-
-INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
-INTEGER,                INTENT(IN)   :: KRRI          ! number of ice var.
-!
-LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
-                                 ! diagnostic fields in the syncronous FM-file
-CHARACTER(LEN=4),       INTENT(IN)   ::  HTURBDIM     ! Kind of turbulence param.
-TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
-                                                  ! metric coefficients
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF  ! Virtual Potential Temp.
-                                                  ! of the reference state
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM ! Lv(T)/Cp/Exner at t-1 
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM      ! Turbulent Mixing length
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS    ! Dissipative length
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHLM,PTKEM! Conservative Potential 
-                                                  ! Temperature and TKE at t-1
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM      ! Mixing ratios at  t-1
-                                                  ! with PRM(:,:,:,1) = cons.
-                                                  ! mixing ratio
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM     ! Scalars at t-1      
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM
-                                  ! s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
-!
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PREDTH1 ! Redelsperger number R_theta
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PREDR1  ! Redelsperger number R_q
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2TH3 ! Redelsperger number R*2_theta
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2R3  ! Redelsperger number R*2_q
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2THR3! Redelsperger number R*2_thq
-REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PREDS1   ! Redelsperger number R_s
-REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PRED2THS3! Redelsperger number R*2_thsv
-REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PRED2RS3 ! Redelsperger number R*2_qsv
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PBLL_O_E! beta*Lk*Leps/tke
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PETHETA ! coefficient E_theta
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PEMOIST ! coefficient E_moist
-!
-!
-!       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) ::  &
-                  ZW1, ZW2, ZW3
-!                                                 working variables
-!                                                     
-INTEGER :: IKB      ! vertical index value for the first inner mass point
-INTEGER :: IKE      ! vertical index value for the last inner mass point
-INTEGER             :: IRESP        ! Return code of FM routines
-INTEGER             :: ILENG        ! Length of the data field in LFIFM file
-INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
-INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
-CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
-CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
-INTEGER::  ISV                      ! number of scalar variables       
-INTEGER::  JSV                      ! loop index for the scalar variables  
-
-INTEGER :: JLOOP
-REAL    :: ZMINVAL
-TYPE(TFIELDDATA)  :: TZFIELD
-! ---------------------------------------------------------------------------
-!
-!*      1.  DEFAULT VALUES,  1D REDELSPERGER NUMBERS 
-!           ----------------------------------------
-!
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-IF (LHOOK) CALL DR_HOOK('PRANDTL',0,ZHOOK_HANDLE)
-
-IF (LHARAT) THEN
-PREDTH1(:,:,:)=0.
-PREDR1(:,:,:)=0.
-PRED2TH3(:,:,:)=0.
-PRED2R3(:,:,:)=0.
-PRED2THR3(:,:,:)=0.
-PREDS1(:,:,:,:)=0.
-PRED2THS3(:,:,:,:)=0.
-PRED2RS3(:,:,:,:)=0.
-PBLL_O_E(:,:,:)=0.
-ENDIF
-!
-IKB = KKA+JPVEXT_TURB*KKL
-IKE = KKU-JPVEXT_TURB*KKL 
-ILENG=SIZE(PTHLM,1)*SIZE(PTHLM,2)*SIZE(PTHLM,3)
-ISV  =SIZE(PSVM,4)
-!
-PETHETA(:,:,:) = MZM(ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM), KKA, KKU, KKL)
-PEMOIST(:,:,:) = MZM(EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM), KKA, KKU, KKL)
-PETHETA(:,:,KKA) = 2.*PETHETA(:,:,IKB) - PETHETA(:,:,IKB+KKL)
-PEMOIST(:,:,KKA) = 2.*PEMOIST(:,:,IKB) - PEMOIST(:,:,IKB+KKL)
-!
-!---------------------------------------------------------------------------
-IF (.NOT. LHARAT) THEN
-!
-!          1.3 1D Redelsperger numbers
-!
-PBLL_O_E(:,:,:) = MZM(XG / PTHVREF(:,:,:) * PLM(:,:,:) * PLEPS(:,:,:) / PTKEM(:,:,:), KKA, KKU, KKL)
-IF (KRR /= 0) THEN                ! moist case
-  PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:) * PETHETA(:,:,:) * &
-                   & GZ_M_W(KKA, KKU, KKL,PTHLM,PDZZ)
-  PREDR1(:,:,:) = XCTV*PBLL_O_E(:,:,:) * PEMOIST(:,:,:) * &
-                   & GZ_M_W(KKA, KKU, KKL,PRM(:,:,:,1),PDZZ)
-ELSE                              ! dry case
-  PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:)  * GZ_M_W(KKA, KKU, KKL,PTHLM,PDZZ)
-  PREDR1(:,:,:) = 0.
-END IF
-!
-!       3. Limits on 1D Redelperger numbers
-!          --------------------------------
-!
-ZMINVAL = (1.-1./XPHI_LIM)
-!
-ZW1 = 1.
-ZW2 = 1.
-!
-WHERE (PREDTH1+PREDR1<-ZMINVAL)
-  ZW1 = (-ZMINVAL) / (PREDTH1+PREDR1)
-END WHERE
-!
-WHERE (PREDTH1<-ZMINVAL)
-  ZW2 = (-ZMINVAL) / (PREDTH1)
-END WHERE
-ZW2 = MIN(ZW1,ZW2)
-!
-ZW1 = 1.
-WHERE (PREDR1<-ZMINVAL)
-  ZW1 = (-ZMINVAL) / (PREDR1)
-END WHERE
-ZW1 = MIN(ZW2,ZW1)
-!
-!
-!       3. Modification of Mixing length and dissipative length
-!          ----------------------------------------------------
-!
-PBLL_O_E(:,:,:) = PBLL_O_E(:,:,:) * ZW1(:,:,:)
-PREDTH1 (:,:,:) = PREDTH1 (:,:,:) * ZW1(:,:,:)
-PREDR1  (:,:,:) = PREDR1  (:,:,:) * ZW1(:,:,:)
-!
-!       4. Threshold for very small (in absolute value) Redelperger numbers
-!          ----------------------------------------------------------------
-!
-ZW2=SIGN(1.,PREDTH1(:,:,:))
-PREDTH1(:,:,:)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDTH1(:,:,:))
-!
-IF (KRR /= 0) THEN                ! dry case
-  ZW2=SIGN(1.,PREDR1(:,:,:))
-  PREDR1(:,:,:)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDR1(:,:,:))
-END IF
-!
-!
-!---------------------------------------------------------------------------
-!
-!          For the scalar variables
-DO JSV=1,ISV
-  PREDS1(:,:,:,JSV)=XCTV*PBLL_O_E(:,:,:)*GZ_M_W(KKA, KKU, KKL,PSVM(:,:,:,JSV),PDZZ)
-END DO
-!
-DO JSV=1,ISV
-  ZW2=SIGN(1.,PREDS1(:,:,:,JSV))
-  PREDS1(:,:,:,JSV)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDS1(:,:,:,JSV))
-END DO
-!
-!---------------------------------------------------------------------------
-!
-!*      2.  3D REDELSPERGER NUMBERS
-!           ------------------------
-!
-IF(HTURBDIM=='1DIM') THEN        ! 1D case
-!
-!
-  PRED2TH3(:,:,:)  = PREDTH1(:,:,:)**2
-!
-  PRED2R3(:,:,:)   = PREDR1(:,:,:) **2
-!
-  PRED2THR3(:,:,:) = PREDTH1(:,:,:) * PREDR1(:,:,:)
-!
-ELSE IF (L2D) THEN                      ! 3D case in a 2D model
-!
-  IF (KRR /= 0) THEN                 ! moist 3D case
-    PRED2TH3(:,:,:)= PREDTH1(:,:,:)**2+(XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) )**2 * &
-      MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2, KKA, KKU, KKL)
-    PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL)
-!
-    PRED2R3(:,:,:)= PREDR1(:,:,:)**2 + (XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:))**2 * &
-        MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2, KKA, KKU, KKL)
-    PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+KKL)
-!
-    PRED2THR3(:,:,:)= PREDR1(:,:,:) * PREDTH1(:,:,:) +  XCTV**2*PBLL_O_E(:,:,:)**2 *   &
-                  PEMOIST(:,:,:) * PETHETA(:,:,:) *                         &
-      MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*     &
-                     GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL), KKA, KKU, KKL)
-    PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+KKL)
-!
-  ELSE                 ! dry 3D case in a 2D model
-    PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 +  XCTV**2*PBLL_O_E(:,:,:)**2 *     &
-      MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2, KKA, KKU, KKL)
-    PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL)
-!
-    PRED2R3(:,:,:) = 0.
-!
-    PRED2THR3(:,:,:) = 0.
-!
-  END IF
-!
-ELSE                                 ! 3D case in a 3D model
-!
-  IF (KRR /= 0) THEN                 ! moist 3D case
-    PRED2TH3(:,:,:)= PREDTH1(:,:,:)**2 +  ( XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) )**2 * &
-      MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2 &
-      + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL)**2, KKA, KKU, KKL)
-    PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL)
-!
-    PRED2R3(:,:,:)= PREDR1(:,:,:)**2 + (XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:))**2 *      &
-        MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2 + &
-        GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, KKA, KKU, KKL)**2, KKA, KKU, KKL)
-    PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+KKL)
-!
-    PRED2THR3(:,:,:)= PREDR1(:,:,:) * PREDTH1(:,:,:) +  XCTV**2*PBLL_O_E(:,:,:)**2 *   &
-         PEMOIST(:,:,:) * PETHETA(:,:,:) *                            &
-         MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*   &
-         GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)+                           &
-         GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, KKA, KKU, KKL)*                    &
-         GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL), KKA, KKU, KKL)
-    PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+KKL)
-!
-  ELSE                 ! dry 3D case in a 3D model
-    PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 +  XCTV**2*PBLL_O_E(:,:,:)**2 *                &
-      MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2 &
-      + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL)**2, KKA, KKU, KKL)
-    PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL)
-!
-    PRED2R3(:,:,:) = 0.
-!
-    PRED2THR3(:,:,:) = 0.
-!
-  END IF
-!
-END IF   ! end of the if structure on the turbulence dimensionnality
-!
-!
-!---------------------------------------------------------------------------
-!
-!           5. Prandtl numbers for scalars
-!              ---------------------------
-DO JSV=1,ISV
-!
-  IF(HTURBDIM=='1DIM') THEN
-!        1D case
-    PRED2THS3(:,:,:,JSV)  = PREDS1(:,:,:,JSV) * PREDTH1(:,:,:)
-    IF (KRR /= 0) THEN
-      PRED2RS3(:,:,:,JSV)   = PREDR1(:,:,:) *PREDS1(:,:,:,JSV)
-    ELSE
-      PRED2RS3(:,:,:,JSV)   = 0.
-    END IF
-!
-  ELSE  IF (L2D) THEN ! 3D case in a 2D model
-!
-    IF (KRR /= 0) THEN
-      ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA
-    ELSE
-      ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL)
-    END IF
-    PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV)   +        &
-                       ZW1*                                              &
-                       MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*       &
-                           GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL),                 &
-                           KKA, KKU, KKL)
-!
-    IF (KRR /= 0) THEN
-      PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV)   +        &
-                       ZW1 * PEMOIST *                                   &
-                       MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*       &
-                           GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL),          &
-                           KKA, KKU, KKL)
-    ELSE
-      PRED2RS3(:,:,:,JSV) = 0.
-    END IF
-!
-  ELSE ! 3D case in a 3D model
-!
-    IF (KRR /= 0) THEN
-      ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA
-    ELSE
-      ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL)
-    END IF
-    PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV)   +        &
-                       ZW1*                                              &
-                       MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*       &
-                           GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)                  &
-                          +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, KKA, KKU, KKL)*       &
-                           GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL),                 &
-                           KKA, KKU, KKL)
-!
-    IF (KRR /= 0) THEN
-      PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV)   +        &
-                       ZW1 * PEMOIST *                                   &
-                       MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*       &
-                           GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)           &
-                          +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, KKA, KKU, KKL)*       &
-                           GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, KKA, KKU, KKL),          &
-                           KKA, KKU, KKL)
-    ELSE
-      PRED2RS3(:,:,:,JSV) = 0.
-    END IF
-!
-  END IF ! end of HTURBDIM if-block
-!
-END DO
-!
-!---------------------------------------------------------------------------
-!
-!*          6. SAVES THE REDELSPERGER NUMBERS
-!              ------------------------------
-!
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
-  !
-  ! stores the RED_TH1
-  TZFIELD%CMNHNAME   = 'RED_TH1'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'RED_TH1'
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_RED_TH1'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,PREDTH1)
-  !
-  ! stores the RED_R1
-  TZFIELD%CMNHNAME   = 'RED_R1'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'RED_R1'
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_RED_R1'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,PREDR1)
-  !
-  ! stores the RED2_TH3
-  TZFIELD%CMNHNAME   = 'RED2_TH3'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'RED2_TH3'
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_RED2_TH3'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,PRED2TH3)
-  !
-  ! stores the RED2_R3
-  TZFIELD%CMNHNAME   = 'RED2_R3'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'RED2_R3'
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_RED2_R3'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,PRED2R3)
-  !
-  ! stores the RED2_THR3
-  TZFIELD%CMNHNAME   = 'RED2_THR3'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'RED2_THR3'
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_RED2_THR3'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,PRED2THR3)
-  !
-END IF
-!
-!---------------------------------------------------------------------------
-ENDIF ! (Done only if LHARAT is FALSE)
-!
-IF (LHOOK) CALL DR_HOOK('PRANDTL',1,ZHOOK_HANDLE)
-END SUBROUTINE PRANDTL
-!
 SUBROUTINE SMOOTH_TURB_FUNCT(PPHI3,PF_LIM,PF)
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PPHI3   ! Phi3
@@ -962,10 +423,12 @@ D_M3_WTH_W2TH_O_DDTDZ(:,:,IKE+1)=D_M3_WTH_W2TH_O_DDTDZ(:,:,IKE)
 IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2TH_O_DDTDZ',1,ZHOOK_HANDLE)
 END FUNCTION D_M3_WTH_W2TH_O_DDTDZ
 !----------------------------------------------------------------------------
-FUNCTION M3_WTH_W2R(KKA,KKU,KKL,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ)
+FUNCTION M3_WTH_W2R(KKA,KKU,KKL,PREDTH1,PREDR1,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ)
   INTEGER,                INTENT(IN) :: KKA 
   INTEGER,                INTENT(IN) :: KKU  
   INTEGER,                INTENT(IN) :: KKL
+  REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
+  REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PKEFF
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
@@ -1016,10 +479,12 @@ D_M3_WTH_W2R_O_DDTDZ(:,:,IKE+1)=D_M3_WTH_W2R_O_DDTDZ(:,:,IKE)
 IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2R_O_DDTDZ',1,ZHOOK_HANDLE)
 END FUNCTION D_M3_WTH_W2R_O_DDTDZ
 !----------------------------------------------------------------------------
-FUNCTION M3_WTH_WR2(KKA,KKU,KKL,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTDZ)
+FUNCTION M3_WTH_WR2(KKA,KKU,KKL,PREDTH1,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTDZ)
   INTEGER,                INTENT(IN) :: KKA 
   INTEGER,                INTENT(IN) :: KKU  
   INTEGER,                INTENT(IN) :: KKL
+  REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
+  REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PKEFF
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
@@ -1794,10 +1259,12 @@ D_M3_WR_W2R_O_DDRDZ = D_M3_WTH_W2TH_O_DDTDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PBLL_O
 IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2R_O_DDRDZ',1,ZHOOK_HANDLE)
 END FUNCTION D_M3_WR_W2R_O_DDRDZ
 !----------------------------------------------------------------------------
-FUNCTION M3_WR_W2TH(KKA,KKU,KKL,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ)
+FUNCTION M3_WR_W2TH(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ)
   INTEGER,                INTENT(IN) :: KKA 
   INTEGER,                INTENT(IN) :: KKU  
   INTEGER,                INTENT(IN) :: KKL
+  REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
+  REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PKEFF
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
@@ -1808,7 +1275,7 @@ FUNCTION M3_WR_W2TH(KKA,KKU,KKL,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ)
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2TH',0,ZHOOK_HANDLE)
-M3_WR_W2TH = M3_WTH_W2R(KKA,KKU,KKL,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ)
+M3_WR_W2TH = M3_WTH_W2R(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ)
 !
 IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2TH',1,ZHOOK_HANDLE)
 END FUNCTION M3_WR_W2TH
@@ -1833,10 +1300,12 @@ D_M3_WR_W2TH_O_DDRDZ = D_M3_WTH_W2R_O_DDTDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PKEFF,
 IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2TH_O_DDRDZ',1,ZHOOK_HANDLE)
 END FUNCTION D_M3_WR_W2TH_O_DDRDZ
 !----------------------------------------------------------------------------
-FUNCTION M3_WR_WTH2(KKA,KKU,KKL,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ)
+FUNCTION M3_WR_WTH2(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ)
   INTEGER,                INTENT(IN) :: KKA 
   INTEGER,                INTENT(IN) :: KKU  
   INTEGER,                INTENT(IN) :: KKL
+  REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDR1
+  REAL, DIMENSION(:,:,:), INTENT(IN) :: PREDTH1
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PD
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PKEFF
   REAL, DIMENSION(:,:,:), INTENT(IN) :: PTKE
@@ -1850,7 +1319,7 @@ FUNCTION M3_WR_WTH2(KKA,KKU,KKL,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PET
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTH2',0,ZHOOK_HANDLE)
-M3_WR_WTH2 = M3_WTH_WR2(KKA,KKU,KKL,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ)
+M3_WR_WTH2 = M3_WTH_WR2(KKA,KKU,KKL,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ)
 !
 IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTH2',1,ZHOOK_HANDLE)
 END FUNCTION M3_WR_WTH2
diff --git a/src/arome/turb/modi_bl89.F90 b/src/arome/turb/modi_bl89.F90
new file mode 100644
index 000000000..e45177299
--- /dev/null
+++ b/src/arome/turb/modi_bl89.F90
@@ -0,0 +1,22 @@
+!     ######spl
+      MODULE MODI_BL89
+!     ################
+INTERFACE
+      SUBROUTINE BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,PTHLM,KRR,PRM,PTKEM,PSHEAR,PLM)
+!
+INTEGER,                  INTENT(IN)  :: KKA 
+INTEGER,                  INTENT(IN)  :: KKU 
+INTEGER,                  INTENT(IN)  :: KKL 
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PZZ
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PDZZ
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHVREF
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTHLM
+INTEGER,                  INTENT(IN)  :: KRR
+REAL, DIMENSION(:,:,:,:), INTENT(IN)  :: PRM
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PTKEM
+REAL, DIMENSION(:,:,:),   INTENT(IN)  :: PSHEAR
+REAL, DIMENSION(:,:,:),   INTENT(OUT) :: PLM
+
+END SUBROUTINE BL89
+END INTERFACE
+END MODULE MODI_BL89
diff --git a/src/arome/turb/modi_bl_depth_diag.F90 b/src/arome/turb/modi_bl_depth_diag.F90
new file mode 100644
index 000000000..778761f9c
--- /dev/null
+++ b/src/arome/turb/modi_bl_depth_diag.F90
@@ -0,0 +1,36 @@
+!     ######spl
+     MODULE MODI_BL_DEPTH_DIAG  
+!    ################ 
+!
+INTERFACE BL_DEPTH_DIAG  
+!
+!
+      FUNCTION BL_DEPTH_DIAG_3D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF)
+
+INTEGER,                INTENT(IN)           :: KKB          ! bottom point
+INTEGER,                INTENT(IN)           :: KKE          ! top point
+REAL, DIMENSION(:,:),   INTENT(IN)           :: PSURF        ! surface flux
+REAL, DIMENSION(:,:),   INTENT(IN)           :: PZS          ! orography
+REAL, DIMENSION(:,:,:), INTENT(IN)           :: PFLUX        ! flux
+REAL, DIMENSION(:,:,:), INTENT(IN)           :: PZZ          ! altitude of flux points
+REAL,                   INTENT(IN)           :: PFTOP_O_FSURF! Flux at BL top / Surface flux
+REAL, DIMENSION(SIZE(PSURF,1),SIZE(PSURF,2)) :: BL_DEPTH_DIAG_3D
+!
+END FUNCTION BL_DEPTH_DIAG_3D
+!
+!
+      FUNCTION BL_DEPTH_DIAG_1D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF)
+INTEGER,                INTENT(IN)           :: KKB          ! bottom point
+INTEGER,                INTENT(IN)           :: KKE          ! top point
+REAL,                   INTENT(IN)           :: PSURF        ! surface flux
+REAL,                   INTENT(IN)           :: PZS          ! orography
+REAL, DIMENSION(:),     INTENT(IN)           :: PFLUX        ! flux
+REAL, DIMENSION(:),     INTENT(IN)           :: PZZ          ! altitude of flux points
+REAL,                   INTENT(IN)           :: PFTOP_O_FSURF! Flux at BL top / Surface flux
+REAL                                         :: BL_DEPTH_DIAG_1D
+!
+END FUNCTION BL_DEPTH_DIAG_1D
+!
+END INTERFACE
+!
+END MODULE MODI_BL_DEPTH_DIAG
diff --git a/src/arome/turb/modi_bl_depth_diag_3d.F90 b/src/arome/turb/modi_bl_depth_diag_3d.F90
new file mode 100644
index 000000000..d2ea0c80d
--- /dev/null
+++ b/src/arome/turb/modi_bl_depth_diag_3d.F90
@@ -0,0 +1,24 @@
+!     ######spl
+     MODULE MODI_BL_DEPTH_DIAG_3D  
+!    ################ 
+!
+!
+INTERFACE
+!
+!
+      FUNCTION BL_DEPTH_DIAG_3D(KKB,KKE,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF)
+INTEGER,                INTENT(IN)           :: KKB          ! bottom point
+INTEGER,                INTENT(IN)           :: KKE          ! top point
+REAL, DIMENSION(:,:),   INTENT(IN)           :: PSURF        ! surface flux
+REAL, DIMENSION(:,:),   INTENT(IN)           :: PZS          ! orography
+REAL, DIMENSION(:,:,:), INTENT(IN)           :: PFLUX        ! flux
+REAL, DIMENSION(:,:,:), INTENT(IN)           :: PZZ          ! altitude of flux points
+REAL,                   INTENT(IN)           :: PFTOP_O_FSURF! Flux at BL top / Surface flux
+REAL, DIMENSION(SIZE(PSURF,1),SIZE(PSURF,2)) :: BL_DEPTH_DIAG_3D
+!
+END FUNCTION BL_DEPTH_DIAG_3D
+!
+!
+END INTERFACE
+!
+END MODULE MODI_BL_DEPTH_DIAG_3D
diff --git a/src/arome/turb/modi_emoist.F90 b/src/arome/turb/modi_emoist.F90
new file mode 100644
index 000000000..57e762b71
--- /dev/null
+++ b/src/arome/turb/modi_emoist.F90
@@ -0,0 +1,26 @@
+!     ######spl
+MODULE MODI_EMOIST
+!#################
+!
+INTERFACE
+!
+FUNCTION EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM) RESULT(PEMOIST)
+!
+INTEGER                              :: KRR        ! number of moist var.
+INTEGER                              :: KRRI       ! number of ice var.
+!
+REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PTHLM    ! Conservative pot. temperature
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::   PRM      ! Mixing ratios, where
+!                                    PRM(:,:,:,1) = conservative mixing ratio
+REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PLOCPEXNM ! Lv(T)/Cp/Exner at time t-1
+REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PAMOIST   ! Amoist
+REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PSRCM     ! Normalized 2dn_order
+                                                    ! moment s'r'c/2Sigma_s2
+!
+REAL,DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)):: PEMOIST ! result
+!
+END FUNCTION EMOIST
+!
+END INTERFACE
+!
+END MODULE MODI_EMOIST
diff --git a/src/arome/turb/modi_etheta.F90 b/src/arome/turb/modi_etheta.F90
new file mode 100644
index 000000000..bc08b8a89
--- /dev/null
+++ b/src/arome/turb/modi_etheta.F90
@@ -0,0 +1,28 @@
+!     ######spl
+MODULE MODI_ETHETA
+!#################
+!
+INTERFACE
+!
+FUNCTION ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM) RESULT(PETHETA)
+!
+INTEGER                              :: KRR          ! number of moist var.
+INTEGER                              :: KRRI         ! number of ice var.
+!
+REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PTHLM     ! Conservative pot. temperature
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::   PRM       ! Mixing ratios, where
+!                                      PRM(:,:,:,1) = conservative mixing ratio
+REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PLOCPEXNM ! Lv(T)/Cp/Exner at time t-1
+REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PATHETA   ! Atheta
+!                                                    
+REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PSRCM     ! Normalized 2dn_order
+                                                    ! moment s'r'c/2Sigma_s2
+!
+REAL,DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)):: PETHETA ! result
+!
+!
+END FUNCTION ETHETA
+!
+END INTERFACE
+!
+END MODULE MODI_ETHETA
diff --git a/src/arome/turb/modi_prandtl.F90 b/src/arome/turb/modi_prandtl.F90
new file mode 100644
index 000000000..74fb802bf
--- /dev/null
+++ b/src/arome/turb/modi_prandtl.F90
@@ -0,0 +1,72 @@
+!     ######spl
+     MODULE MODI_PRANDTL
+!    ###################
+!
+INTERFACE
+!
+      SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_DIAG,&
+                         HTURBDIM,                             &
+                         HFMFILE,HLUOUT,                       &
+                         PDXX,PDYY,PDZZ,PDZX,PDZY,             &
+                         PTHVREF,PLOCPEXNM,PATHETA,PAMOIST,    &
+                         PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, &
+                         PREDTH1,PREDR1,                       &
+                         PRED2TH3, PRED2R3, PRED2THR3,         &
+                         PREDS1,PRED2THS3, PRED2RS3,           &
+                         PBLL_O_E,                             &
+                         PETHETA, PEMOIST                      )
+!
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
+INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
+INTEGER,                INTENT(IN)   :: KRRI          ! number of ice var.
+!
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening
+LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
+                                 ! diagnostic fields in the syncronous FM-file
+CHARACTER*4           , INTENT(IN)   ::  HTURBDIM     ! Kind of turbulence param.
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                  ! metric coefficients
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF  ! Virtual Potential Temp.
+                                                  ! of the reference state
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM ! Lv(T)/Cp/Exner at t-1 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM      ! Turbulent Mixing length
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS    ! Dissipative length
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHLM,PTKEM! Conservative Potential 
+                                                  ! Temperature and TKE at t-1
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM      ! Mixing ratios at  t-1
+                                                  ! with PRM(:,:,:,1) = cons.
+                                                  ! mixing ratio
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM     ! Scalars at t-1      
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM
+                                  ! s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
+!
+!
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PREDTH1 ! Redelsperger number R_theta
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PREDR1  ! Redelsperger number R_q
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2TH3 ! Redelsperger number R*2_theta
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2R3  ! Redelsperger number R*2_q
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2THR3! Redelsperger number R*2_thq
+REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PREDS1   ! Redelsperger number R_sv
+REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PRED2THS3! Redelsperger number R*2_thsv
+REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PRED2RS3 ! Redelsperger number R*2_qsv
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PBLL_O_E! beta*Lk*Leps/tke
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PETHETA ! coefficient E_theta
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PEMOIST ! coefficient E_moist
+!
+END SUBROUTINE PRANDTL
+!
+END INTERFACE
+!
+END MODULE MODI_PRANDTL
diff --git a/src/arome/turb/modi_rmc01.F90 b/src/arome/turb/modi_rmc01.F90
new file mode 100644
index 000000000..1845c21be
--- /dev/null
+++ b/src/arome/turb/modi_rmc01.F90
@@ -0,0 +1,24 @@
+!     ######spl
+      MODULE MODI_RMC01
+!     ################
+INTERFACE
+      SUBROUTINE RMC01(HTURBLEN,KKA,KKU,KKL,PZZ,PDXX,PDYY,PDZZ,PDIRCOSZW, &
+                       PSBL_DEPTH, PLMO, PLK, PLEPS                )
+!
+CHARACTER(LEN=4),         INTENT(IN)    :: HTURBLEN ! type of mixing length
+INTEGER,                  INTENT(IN)    :: KKA           !near ground array index  
+INTEGER,                  INTENT(IN)    :: KKU           !uppest atmosphere array index
+INTEGER,                  INTENT(IN)    :: KKL           !vert. levels type 1=MNH -1=ARO
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PZZ   ! altitude of flux points
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDXX  ! width of grid mesh (X dir)
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDYY  ! width of grid mesh (Y dir)
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PDZZ  ! width of vert. layers
+REAL, DIMENSION(:,:),     INTENT(IN)    :: PDIRCOSZW ! Director Cosinus 
+REAL, DIMENSION(:,:),     INTENT(IN)    :: PSBL_DEPTH! SBL depth
+REAL, DIMENSION(:,:),     INTENT(IN)    :: PLMO  ! Monin Obuhkov length
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PLK   ! Mixing length
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PLEPS ! Dissipative length
+
+END SUBROUTINE RMC01
+END INTERFACE
+END MODULE MODI_RMC01
diff --git a/src/arome/turb/modi_sbl_depth.F90 b/src/arome/turb/modi_sbl_depth.F90
new file mode 100644
index 000000000..1f9fb9439
--- /dev/null
+++ b/src/arome/turb/modi_sbl_depth.F90
@@ -0,0 +1,24 @@
+!     ######spl
+     MODULE MODI_SBL_DEPTH  
+!    ################ 
+!
+INTERFACE
+!
+      SUBROUTINE SBL_DEPTH(KKB,KKE,PZZ,PFLXU,PFLXV,PWTHV,PLMO,PSBL_DEPTH)
+!
+INTEGER,                INTENT(IN)    :: KKB       ! first physical level
+INTEGER,                INTENT(IN)    :: KKE       ! upper physical level
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ       ! altitude of flux levels
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PFLXU     ! u'w'
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PFLXV     ! v'w'
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PWTHV     ! buoyancy flux
+REAL, DIMENSION(:,:),   INTENT(IN)    :: PLMO      ! Monin-Obukhov length
+REAL, DIMENSION(:,:),   INTENT(INOUT) :: PSBL_DEPTH! boundary layer height
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE SBL_DEPTH
+!
+END INTERFACE
+!
+END MODULE MODI_SBL_DEPTH
diff --git a/src/arome/turb/modi_th_r_from_thl_rt_1d.F90 b/src/arome/turb/modi_th_r_from_thl_rt_1d.F90
new file mode 100644
index 000000000..577edb249
--- /dev/null
+++ b/src/arome/turb/modi_th_r_from_thl_rt_1d.F90
@@ -0,0 +1,24 @@
+!     ######spl
+      MODULE MODI_TH_R_FROM_THL_RT_1D
+!     ###############################
+!
+      INTERFACE
+      SUBROUTINE TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE,PP,             &
+                                  PTHL, PRT, PTH, PRV, PRL, PRI,         &
+                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH     )
+CHARACTER*1       , INTENT(IN)    :: HFRAC_ICE
+REAL, DIMENSION(:), INTENT(INOUT) :: PFRAC_ICE
+REAL, DIMENSION(:), INTENT(IN) :: PP     ! Pressure
+REAL, DIMENSION(:), INTENT(IN) :: PTHL   ! Liquid pot. temp.
+REAL, DIMENSION(:), INTENT(IN) :: PRT    ! Total mixing ratios 
+REAL, DIMENSION(:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
+REAL, DIMENSION(:), INTENT(OUT):: PTH    ! Potential temp.
+REAL, DIMENSION(:), INTENT(OUT):: PRV    ! vapor mixing ratio
+REAL, DIMENSION(:), INTENT(INOUT):: PRL  ! cloud mixing ratio
+REAL, DIMENSION(:), INTENT(INOUT):: PRI  ! ice   mixing ratio
+REAL, DIMENSION(:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
+REAL, DIMENSION(:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
+
+      END SUBROUTINE TH_R_FROM_THL_RT_1D
+      END INTERFACE
+      END MODULE MODI_TH_R_FROM_THL_RT_1D
diff --git a/src/arome/turb/modi_th_r_from_thl_rt_2d.F90 b/src/arome/turb/modi_th_r_from_thl_rt_2d.F90
new file mode 100644
index 000000000..a3af56f23
--- /dev/null
+++ b/src/arome/turb/modi_th_r_from_thl_rt_2d.F90
@@ -0,0 +1,24 @@
+!     ######spl
+      MODULE MODI_TH_R_FROM_THL_RT_2D
+      INTERFACE
+      SUBROUTINE TH_R_FROM_THL_RT_2D(HFRAC_ICE,PFRAC_ICE,PP,             &
+                                  PTHL, PRT, PTH, PRV, PRL, PRI,         &
+                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH     )
+CHARACTER*1         , INTENT(IN) :: HFRAC_ICE
+REAL, DIMENSION(:,:), INTENT(INOUT) :: PFRAC_ICE
+REAL, DIMENSION(:,:), INTENT(IN) :: PP          ! Pressure
+REAL, DIMENSION(:,:), INTENT(IN) :: PTHL    ! thetal to transform into th
+REAL, DIMENSION(:,:),INTENT(IN)  :: PRT    ! Total mixing ratios to transform into rv,rc and ri
+REAL, DIMENSION(:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
+REAL, DIMENSION(:,:), INTENT(OUT):: PTH    ! th
+REAL, DIMENSION(:,:), INTENT(OUT):: PRV    ! vapor mixing ratio
+REAL, DIMENSION(:,:), INTENT(INOUT):: PRL    ! vapor mixing ratio
+REAL, DIMENSION(:,:), INTENT(INOUT):: PRI    ! vapor mixing ratio
+REAL, DIMENSION(:,:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
+REAL, DIMENSION(:,:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
+
+      END SUBROUTINE TH_R_FROM_THL_RT_2D
+
+      END INTERFACE
+
+      END MODULE MODI_TH_R_FROM_THL_RT_2D
diff --git a/src/arome/turb/modi_th_r_from_thl_rt_3d.F90 b/src/arome/turb/modi_th_r_from_thl_rt_3d.F90
new file mode 100644
index 000000000..5b52a056f
--- /dev/null
+++ b/src/arome/turb/modi_th_r_from_thl_rt_3d.F90
@@ -0,0 +1,27 @@
+!     ######spl
+      MODULE MODI_TH_R_FROM_THL_RT_3D
+!     ###############################
+INTERFACE
+!
+      SUBROUTINE TH_R_FROM_THL_RT_3D(HFRAC_ICE,PFRAC_ICE,PP,             &
+                                  PTHL, PRT, PTH, PRV, PRL, PRI, &
+                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH       )
+
+CHARACTER*1         , INTENT(IN) :: HFRAC_ICE
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFRAC_ICE
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PP          ! Pressure
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHL    ! thetal to transform into th
+REAL, DIMENSION(:,:,:),INTENT(IN)  :: PRT    ! Total mixing ratios to transform into rv,rc and ri
+REAL, DIMENSION(:,:,:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
+REAL, DIMENSION(:,:,:), INTENT(OUT):: PTH    ! th
+REAL, DIMENSION(:,:,:), INTENT(OUT):: PRV    ! vapor mixing ratio
+REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRL    ! vapor mixing ratio
+REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRI    ! vapor mixing ratio
+REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
+REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
+!
+END SUBROUTINE TH_R_FROM_THL_RT_3D
+!
+END INTERFACE
+!
+END MODULE MODI_TH_R_FROM_THL_RT_3D
diff --git a/src/arome/turb/modi_thl_rt_from_th_r_mf.F90 b/src/arome/turb/modi_thl_rt_from_th_r_mf.F90
new file mode 100644
index 000000000..ed1dd9c6b
--- /dev/null
+++ b/src/arome/turb/modi_thl_rt_from_th_r_mf.F90
@@ -0,0 +1,31 @@
+!     ######spl
+     MODULE MODI_THL_RT_FROM_TH_R_MF
+!    ###############################
+!
+INTERFACE
+!     #################################################################
+      SUBROUTINE THL_RT_FROM_TH_R_MF( KRR,KRRL,KRRI,                  &
+                                      PTH, PR, PEXN, &
+                                      PTHL, PRT                      )
+!     #################################################################
+!
+!               
+!*               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.
+
+REAL, DIMENSION(:,:), INTENT(IN)   :: PTH      ! theta
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PR       ! water species
+REAL, DIMENSION(:,:), INTENT(IN)   :: PEXN    ! exner function
+
+REAL, DIMENSION(:,:), INTENT(OUT)  :: PTHL     ! th_l
+REAL, DIMENSION(:,:), INTENT(OUT)  :: PRT      ! total non precip. water
+!
+END SUBROUTINE THL_RT_FROM_TH_R_MF
+
+END INTERFACE
+!
+END MODULE MODI_THL_RT_FROM_TH_R_MF
diff --git a/src/arome/turb/modi_tke_eps_sources.F90 b/src/arome/turb/modi_tke_eps_sources.F90
new file mode 100644
index 000000000..6df0247c3
--- /dev/null
+++ b/src/arome/turb/modi_tke_eps_sources.F90
@@ -0,0 +1,63 @@
+!     ######spl
+      MODULE MODI_TKE_EPS_SOURCES
+!     ###########################
+INTERFACE
+!
+      SUBROUTINE TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKEM,PLM,PLEPS,PDP,PTRH,  &
+                     & PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,             &
+                     & PTSTEP,PIMPL,PEXPL,                              &
+                     & HTURBLEN,HTURBDIM,                               &
+                     & HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,            &
+                  & PTP,PRTKES,PRTHLS,PCOEF_DISS,PTDIFF,      &
+                  & PTDISS,PEDR,YDDDH, YDLDDH, YDMDDH)
+!
+USE DDH_MIX, ONLY : TYP_DDH
+USE YOMLDDH, ONLY : TLDDH
+USE YOMMDDH, ONLY : TMDDH
+!
+INTEGER,                 INTENT(IN)   :: KKA      !near ground array index  
+INTEGER,                 INTENT(IN)   :: KKU      !uppest atmosphere array index
+INTEGER,                 INTENT(IN)   :: KKL      !vert. levels type 1=MNH -1=ARO
+INTEGER                               ::  KMI          ! model index number  
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PTKEM        ! TKE at t-deltat
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PLM          ! mixing length         
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PLEPS        ! dissipative length
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PRHODJ       ! density * grid volume
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                       ! metric coefficients
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PZZ          ! physical height w-pt
+REAL,                    INTENT(IN)   ::  PTSTEP       ! Double Time step ( *.5 for
+                                                       ! the first time step ) 
+REAL,                    INTENT(IN)   ::  PEXPL, PIMPL ! Coef. temporal. disc.
+CHARACTER*4,             INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
+                                                       ! turbulence scheme
+CHARACTER*4,             INTENT(IN)   ::  HTURBLEN     ! kind of mixing length 
+CHARACTER(LEN=*),        INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                       ! FM-file
+CHARACTER(LEN=*),        INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                       ! model n
+LOGICAL,                 INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                       ! file opening
+LOGICAL,                 INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
+                                  ! diagnostic fields in the syncronous FM-file
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PDP, PTRH          ! Dyn. prod. of TKE
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PTP          ! Ther. prod. of TKE
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PRTKES       ! RHOD * Jacobian *
+                                                       ! TKE at t+deltat
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PRTHLS       ! Source of Theta_l
+REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PCOEF_DISS   ! 1/(Cph*Exner)
+REAL, DIMENSION(:,:,:),  INTENT(OUT)  ::  PTDIFF     ! Diffusion TKE term
+REAL, DIMENSION(:,:,:),  INTENT(OUT)  ::  PTDISS     ! Dissipation TKE term
+
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)   ::  PEDR      ! eddy dissipation rate
+TYPE(TYP_DDH),                       INTENT(INOUT) :: YDDDH
+TYPE(TLDDH),                       INTENT(IN) :: YDLDDH
+TYPE(TMDDH),                       INTENT(IN) :: YDMDDH
+!
+!
+!
+END SUBROUTINE TKE_EPS_SOURCES
+!
+END INTERFACE
+!
+END MODULE MODI_TKE_EPS_SOURCES
diff --git a/src/arome/turb/modi_tm06.F90 b/src/arome/turb/modi_tm06.F90
new file mode 100644
index 000000000..5914828c3
--- /dev/null
+++ b/src/arome/turb/modi_tm06.F90
@@ -0,0 +1,25 @@
+!     ######spl
+     MODULE MODI_TM06  
+!    ################ 
+!
+INTERFACE
+!
+      SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2)
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHVREF    ! reference potential temperature
+REAL, DIMENSION(:,:),   INTENT(IN) :: PBL_DEPTH ! boundary layer height
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ        ! altitude of flux levels
+REAL, DIMENSION(:,:),   INTENT(IN) :: PSFTH      ! surface heat flux
+REAL, DIMENSION(:,:,:), INTENT(OUT):: PMWTH      ! w'2th'
+REAL, DIMENSION(:,:,:), INTENT(OUT):: PMTH2      ! w'th'2
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE TM06
+!
+END INTERFACE
+!
+END MODULE MODI_TM06
diff --git a/src/arome/turb/modi_tm06_h.F90 b/src/arome/turb/modi_tm06_h.F90
new file mode 100644
index 000000000..c37f96f34
--- /dev/null
+++ b/src/arome/turb/modi_tm06_h.F90
@@ -0,0 +1,24 @@
+!     ######spl
+     MODULE MODI_TM06_H  
+!    ################ 
+!
+INTERFACE
+!
+      SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH)
+!
+INTEGER,                INTENT(IN)    :: KKB       ! index of 1st physical level
+                                                   ! close to ground 
+INTEGER,                INTENT(IN)    :: KKTB      ! first physical level in k
+INTEGER,                INTENT(IN)    :: KKTE      ! last physical level in k
+REAL,                   INTENT(IN)    :: PTSTEP    ! Double time step
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PZZ       ! altitude of flux levels
+REAL, DIMENSION(:,:,:), INTENT(IN)    :: PFLXZ     ! heat flux
+REAL, DIMENSION(:,:),   INTENT(INOUT) :: PBL_DEPTH ! boundary layer height
+!
+!-------------------------------------------------------------------------------
+!
+END SUBROUTINE TM06_H
+!
+END INTERFACE
+!
+END MODULE MODI_TM06_H
diff --git a/src/arome/turb/modi_tridiag.F90 b/src/arome/turb/modi_tridiag.F90
new file mode 100644
index 000000000..f04637f9f
--- /dev/null
+++ b/src/arome/turb/modi_tridiag.F90
@@ -0,0 +1,25 @@
+!     ######spl
+      MODULE MODI_TRIDIAG
+!     ###################
+INTERFACE
+!
+       SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
+                                  PRHODJ,PSOURCE,PVARP )
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR
+REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PVARM       ! variable at t-1  
+REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PA          ! upper diag. elements
+REAL,                      INTENT(IN)  :: PTSTEP      ! Double time step
+REAL,                      INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
+REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PRHODJ      ! (dry rho)*J
+REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
+!
+REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PVARP       ! variable at t+1        
+!
+END SUBROUTINE TRIDIAG
+!
+END INTERFACE
+!
+END MODULE MODI_TRIDIAG 
diff --git a/src/arome/turb/modi_tridiag_massflux.F90 b/src/arome/turb/modi_tridiag_massflux.F90
new file mode 100644
index 000000000..1e6a223e9
--- /dev/null
+++ b/src/arome/turb/modi_tridiag_massflux.F90
@@ -0,0 +1,28 @@
+!     ######spl
+      MODULE MODI_TRIDIAG_MASSFLUX
+!     ###################
+INTERFACE
+!
+       SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL,  &
+                                 PDZZ,PRHODJ,PVARP             )
+!
+INTEGER,                INTENT(IN)   :: KKA          ! near ground array index
+INTEGER,                INTENT(IN)   :: KKB          ! near ground physical index
+INTEGER,                INTENT(IN)   :: KKE          ! uppest atmosphere physical index
+INTEGER,                INTENT(IN)   :: KKU          ! uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL          ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+REAL, DIMENSION(:,:), INTENT(IN) :: PVARM   ! variable at t-1      at mass point
+REAL, DIMENSION(:,:), INTENT(IN) :: PF      ! flux in dT/dt=-dF/dz at flux point
+REAL, DIMENSION(:,:), INTENT(IN) :: PDFDT   ! dF/dT                at flux point
+REAL,                   INTENT(IN) :: PTSTEP  ! Double time step
+REAL,                   INTENT(IN) :: PIMPL   ! implicit weight
+REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ    ! Dz                   at flux point
+REAL, DIMENSION(:,:), INTENT(IN) :: PRHODJ  ! (dry rho)*J          at mass point
+!
+REAL, DIMENSION(:,:), INTENT(OUT):: PVARP   ! variable at t+1      at mass point
+!
+END SUBROUTINE TRIDIAG_MASSFLUX
+!
+END INTERFACE
+!
+END MODULE MODI_TRIDIAG_MASSFLUX 
diff --git a/src/arome/turb/modi_tridiag_thermo.F90 b/src/arome/turb/modi_tridiag_thermo.F90
new file mode 100644
index 000000000..e0b5240fb
--- /dev/null
+++ b/src/arome/turb/modi_tridiag_thermo.F90
@@ -0,0 +1,26 @@
+!     ######spl
+      MODULE MODI_TRIDIAG_THERMO
+!     ###################
+INTERFACE
+!
+       SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL,  &
+                                 PDZZ,PRHODJ,PVARP             )
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARM   ! variable at t-1      at mass point
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PF      ! flux in dT/dt=-dF/dz at flux point
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PDFDDTDZ! dF/d(dT/dz)          at flux point
+REAL,                   INTENT(IN) :: PTSTEP  ! Double time step
+REAL,                   INTENT(IN) :: PIMPL   ! implicit weight
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ    ! Dz                   at flux point
+REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ  ! (dry rho)*J          at mass point
+!
+REAL, DIMENSION(:,:,:), INTENT(OUT):: PVARP   ! variable at t+1      at mass point
+!
+END SUBROUTINE TRIDIAG_THERMO
+!
+END INTERFACE
+!
+END MODULE MODI_TRIDIAG_THERMO 
diff --git a/src/arome/turb/modi_tridiag_tke.F90 b/src/arome/turb/modi_tridiag_tke.F90
new file mode 100644
index 000000000..9398d9fb6
--- /dev/null
+++ b/src/arome/turb/modi_tridiag_tke.F90
@@ -0,0 +1,27 @@
+!     ######spl
+      MODULE MODI_TRIDIAG_TKE
+!     ##########################
+INTERFACE
+!
+       SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
+                                  PRHODJ,PSOURCE,PDIAG,PVARP )
+!
+INTEGER,                INTENT(IN)   :: KKA     !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU     !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL     !vert. levels type 1=MNH -1=ARO
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PVARM       ! variable at t-1  
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PA          ! upper diag. elements
+REAL,                   INTENT(IN)  :: PTSTEP      ! Double time step
+REAL,                   INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PRHODJ      ! (dry rho)*J
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PSOURCE     ! source term of PVAR    
+REAL, DIMENSION(:,:,:), INTENT(IN)  :: PDIAG       ! diagonal term linked to
+                                                      ! the implicit dissipation
+!
+REAL, DIMENSION(:,:,:), INTENT(OUT) :: PVARP       ! variable at t+1        
+!
+END SUBROUTINE TRIDIAG_TKE
+!
+END INTERFACE
+!
+END MODULE MODI_TRIDIAG_TKE
diff --git a/src/arome/turb/modi_tridiag_wind.F90 b/src/arome/turb/modi_tridiag_wind.F90
new file mode 100644
index 000000000..87fb9c3e8
--- /dev/null
+++ b/src/arome/turb/modi_tridiag_wind.F90
@@ -0,0 +1,27 @@
+!     ######spl
+      MODULE MODI_TRIDIAG_WIND
+!     ########################
+INTERFACE
+!
+       SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
+                                             PRHODJA,PSOURCE,PVARP )
+!
+INTEGER,                  INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                  INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                  INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR
+REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PVARM       ! variable at t-1  
+REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PA          ! upper diag. elements
+REAL, DIMENSION(:,:),      INTENT(IN)  :: PCOEFS      ! implicit coeff for the
+                                                      ! surface flux
+REAL,                      INTENT(IN)  :: PTSTEP      ! Double time step
+REAL,                      INTENT(IN)  :: PEXPL,PIMPL ! weights of the temporal scheme
+REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PRHODJA     ! (dry rho)*J averaged
+REAL, DIMENSION(:,:,:),    INTENT(IN)  :: PSOURCE     ! source term of PVAR    
+!
+REAL, DIMENSION(:,:,:),    INTENT(OUT) :: PVARP       ! variable at t+1        
+!
+END SUBROUTINE TRIDIAG_WIND
+!
+END INTERFACE
+!
+END MODULE MODI_TRIDIAG_WIND
diff --git a/src/common/turb/modi_turb.F90 b/src/arome/turb/modi_turb.F90
similarity index 69%
rename from src/common/turb/modi_turb.F90
rename to src/arome/turb/modi_turb.F90
index ae2a67c52..2a15db137 100644
--- a/src/common/turb/modi_turb.F90
+++ b/src/arome/turb/modi_turb.F90
@@ -6,28 +6,29 @@ INTERFACE
 !
       SUBROUTINE TURB(KKA, KKU, KKL, KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,   &
               & KSPLIT,KMODEL_CL, &
-              & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
-              & HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,   &
-              & PIMPL,PTSTEP,TPFILE,                      &
-              & PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,          &
+              & OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
+              & HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HINST_SFU,         &
+              & HMF_UPDRAFT,PIMPL,PTSTEP_UVW, PTSTEP_MET,PTSTEP_SV,   &
+              & HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,          &
               & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE,    &
-              & PRHODJ,PTHVREF,                              &
+              & PRHODJ,PTHVREF,PRHODREF,                              &
               & PSFTH,PSFRV,PSFSV,PSFU,PSFV,                          &
-              & PPABST,PUT,PVT,PWT,PTKET,PSVT,PSRCT,                  &
+              & PPABSM,PUM,PVM,PWM,PTKEM,PSVM,PSRCM,                  &
               & PLENGTHM,PLENGTHH,MFMOIST,                            &
               & PBL_DEPTH, PSBL_DEPTH,                                &
-              & PCEI,PCEI_MIN,PCEI_MAX,PCOEF_AMPL_SAT,    &
-              & PTHLT,PRT,                                            &
+              & PUT,PVT,PWT,PCEI,PCEI_MIN,PCEI_MAX,PCOEF_AMPL_SAT,    &
+              & PTHLM,PRM,                                            &
               & PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,PRTKES,              &
-              & PSIGS,                                         &
+              & PHGRAD,PSIGS,                                         &
               & PDRUS_TURB,PDRVS_TURB,                                &
               & PDRTHLS_TURB,PDRRTS_TURB,PDRSVS_TURB,                 &
-              & PFLXZTHVMF,PWTH,PWRC,PWSV,PDP,PTP,PTPMF,PTDIFF,PTDISS,&
-              & TBUDGETS, KBUDGETS,                                   &
-              & PTR,PDISS,PEDR,PLEM                                   ) 
+              & PFLXZTHVMF,PWTH,PWRC,PWSV,PDP,PTP,PTPMF,PTDIFF,       &
+              & PTDISS,PEDR,YDDDH,YDLDDH,YDMDDH)
+
 !
-USE MODD_BUDGET, ONLY : TBUDGETDATA
-USE MODD_IO, ONLY : TFILEDATA
+USE DDH_MIX, ONLY : TYP_DDH
+USE YOMLDDH, ONLY  : TLDDH
+USE YOMMDDH, ONLY  : TMDDH
 !
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
@@ -37,8 +38,11 @@ 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.
 CHARACTER(LEN=*),DIMENSION(:),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
+CHARACTER(LEN=4),INTENT(IN)          :: HMF_UPDRAFT   ! Type of mass flux
 INTEGER,                INTENT(IN)   :: KSPLIT        ! number of time-splitting
 INTEGER,                INTENT(IN)   :: KMODEL_CL     ! model number for cloud mixing length
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening
 LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
@@ -46,15 +50,21 @@ LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
 LOGICAL,                INTENT(IN)   ::  OSUBG_COND   ! switch for SUBGrid 
                                  ! CONDensation
 LOGICAL,                INTENT(IN)   ::  ORMC01       ! switch for RMC01 lengths in SBL
-CHARACTER(LEN=4)       , INTENT(IN)   ::  HTURBDIM  ! dimensionality of the 
+CHARACTER*4           , INTENT(IN)      ::  HTURBDIM  ! dimensionality of the 
                                  ! turbulence scheme
-CHARACTER(LEN=4)      , INTENT(IN)   ::  HTURBLEN     ! kind of mixing length
-CHARACTER(LEN=4)      , INTENT(IN)   ::  HTOM         ! kind of Third Order Moment
-CHARACTER(LEN=4)      , INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing length
+CHARACTER*4           , INTENT(IN)   ::  HTURBLEN     ! kind of mixing length
+CHARACTER*4           , INTENT(IN)   ::  HTOM         ! kind of Third Order Moment
+CHARACTER*4           , INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing length
+CHARACTER*1           , INTENT(IN)   ::  HINST_SFU    ! temporal location of the
+                                                      ! surface friction flux
 REAL,                   INTENT(IN)   ::  PIMPL        ! degree of implicitness
-!CHARACTER (LEN=4),      INTENT(IN)   ::  HCLOUD       ! Kind of microphysical scheme
-REAL,                   INTENT(IN)   ::  PTSTEP       ! Timestep
-TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file for MesoNH
+REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
+REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
+REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   :: PDXX,PDYY,PDZZ,PDZX,PDZY
                                         ! metric coefficients
@@ -71,6 +81,8 @@ REAL, DIMENSION(:,:,:), INTENT(IN)      ::  MFMOIST   ! Moist mass flux DUal sch
 
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PTHVREF   ! Virtual Potential
                                         ! Temperature of the reference state
+REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PRHODREF  ! dry density of the 
+                                        ! reference state
 !
 REAL, DIMENSION(:,:),   INTENT(IN)      ::  PSFTH,PSFRV,   &
 ! normal surface fluxes of theta and Rv 
@@ -80,15 +92,17 @@ REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PSFSV
 ! normal surface fluxes of Scalar var. 
 !
 !    prognostic variables at t- deltat
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PPABST      ! Pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PUT,PVT,PWT ! wind components
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PTKET       ! TKE
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVT        ! passive scal. var.
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PSRCT       ! Second-order flux
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PUM,PVM,PWM ! wind components
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PTKEM       ! TKE
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM        ! passive scal. var.
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PSRCM       ! Second-order flux
                       ! s'rc'/2Sigma_s2 at time t-1 multiplied by Lambda_3
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PBL_DEPTH  ! BL depth for TOMS
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PSBL_DEPTH ! SBL depth for RMC01
 !
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PUT,PVT,PWT ! Wind  at t
+!
 !    variables for cloud mixing length
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PCEI ! Cloud Entrainment instability
                                                  ! index to emphasize localy 
@@ -97,8 +111,8 @@ REAL, INTENT(IN)      ::  PCEI_MIN ! minimum threshold for the instability index
 REAL, INTENT(IN)      ::  PCEI_MAX ! maximum threshold for the instability index CEI
 REAL, INTENT(IN)      ::  PCOEF_AMPL_SAT ! saturation of the amplification coefficient
 !   thermodynamical variables which are transformed in conservative var.
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PTHLT       ! conservative pot. temp.
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRT         ! water var.  where 
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PTHLM       ! conservative pot. temp.
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRM         ! water var.  where 
                              ! PRM(:,:,:,1) is the conservative mixing ratio        
 !
 ! sources of momentum, conservative potential temperature, Turb. Kin. Energy, 
@@ -111,6 +125,7 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRRS
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS
 ! Sigma_s at time t+1 : square root of the variance of the deviation to the 
 ! saturation 
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PHGRAD
 REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PSIGS
 REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PDRUS_TURB   ! evolution of rhoJ*U   by turbulence only
 REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PDRVS_TURB   ! evolution of rhoJ*V   by turbulence only
@@ -128,17 +143,17 @@ REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PTP        ! Thermal TKE production
 REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PTPMF      ! Thermal TKE production
 REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PTDIFF     ! Diffusion TKE term
 REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PTDISS     ! Dissipation TKE term
-!
+
+REAL, DIMENSION(:,:,:),INTENT(OUT)   :: PEDR       ! eddy dissipation rate
+
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PLENGTHM 
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PLENGTHH 
 !
-TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
-INTEGER, INTENT(IN) :: KBUDGETS
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  :: PTR   ! Transport production of TKE
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  :: PDISS ! Dissipation of TKE
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  :: PEDR  ! EDR
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  :: PLEM  ! Mixing length
+
+TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
+TYPE(TLDDH),   INTENT(IN)    :: YDLDDH
+TYPE(TMDDH),   INTENT(IN)    :: YDMDDH
+
 !
 !-------------------------------------------------------------------------------
 !
diff --git a/src/arome/turb/modi_turb_ver.F90 b/src/arome/turb/modi_turb_ver.F90
new file mode 100644
index 000000000..56dbe815d
--- /dev/null
+++ b/src/arome/turb/modi_turb_ver.F90
@@ -0,0 +1,125 @@
+!     ######spl
+     MODULE MODI_TURB_VER 
+!    ####################
+!
+INTERFACE 
+!
+      SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
+                      OCLOSE_OUT,OTURB_FLX,                         &
+                      HTURBDIM,HTOM,PIMPL,PEXPL,                    & 
+                      PTSTEP_UVW,PTSTEP_MET, PTSTEP_SV,             &
+                      HFMFILE,HLUOUT,                               &
+                      PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
+                      PCOSSLOPE,PSINSLOPE,                          &
+                      PRHODJ,PTHVREF,                               &
+                      PSFTHM,PSFRM,PSFSVM,PSFTHP,PSFRP,PSFSVP,      &
+                      PCDUEFF,PTAU11M,PTAU12M,PTAU33M,              &
+                      PUM,PVM,PWM,PUSLOPEM,PVSLOPEM,PTHLM,PRM,PSVM, &
+                      PTKEM,PLM,PLENGTHM,PLENGTHH,PLEPS,MFMOIST,    &
+                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE,    &
+                      PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH,        &
+                      PSBL_DEPTH,PLMO,                              &
+                      PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,             &
+                      PDP,PTP,PSIGS,PWTH,PWRC,PWSV          )
+
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
+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)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
+LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
+                                 ! turbulent fluxes in the syncronous FM-file
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
+                                                      ! turbulence scheme
+CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
+REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
+REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
+REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
+REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
+                                                      ! Metric coefficients
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
+                                                      ! normal to the ground surface
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PZZ          ! altitudes at flux points
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCOSSLOPE    ! cosinus of the angle 
+                                      ! between i and the slope vector
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE    ! sinus of the angle 
+                                      ! between i and the slope vector
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST      ! moist mass flux dual scheme
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! ref. state Virtual 
+                                                      ! Potential Temperature 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSFTHM,PSFRM ! surface fluxes at time
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSFSVM       ! t - deltat 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSFTHP,PSFRP ! surface fluxes at time
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSFSVP       ! t + deltat 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCDUEFF     ! Cd * || u || at time t
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU11M      ! <uu> in the axes linked 
+       ! to the maximum slope direction and the surface normal and the binormal 
+       ! at time t - dt
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU12M      ! <uv> in the same axes
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU33M      ! <ww> in the same axes
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PUM,PVM,PWM,PTHLM 
+  ! Wind and potential temperature at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM          ! Mixing ratios 
+                                                      ! at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM         ! scalar var. at t-Delta t
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PUSLOPEM     ! wind component along the 
+                                     ! maximum slope direction
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PVSLOPEM     ! wind component along the 
+                                     ! direction normal to the maximum slope one
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLENGTHM     ! Turb. mixing length momentum   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLENGTHH     ! Turb. mixing length heat/moisture  
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS        ! dissipative length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exner at time t-1
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM        ! normalized 
+                  ! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFRAC_ICE    ! ri fraction of rc+ri
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFWTH        ! d(w'2th' )/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFWR         ! d(w'2r'  )/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFTH2        ! d(w'th'2 )/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFR2         ! d(w'r'2  )/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFTHR        ! d(w'th'r')/dz
+REAL, DIMENSION(:,:),   INTENT(INOUT)::  PBL_DEPTH    ! BL depth
+REAL, DIMENSION(:,:),   INTENT(INOUT)::  PSBL_DEPTH   ! SBL depth
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PLMO         ! Monin-Obukhov length
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   ::  PRUS, PRVS, PRWS, PRTHLS
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS,PRRS
+                            ! cumulated sources for the prognostic variables
+!
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PDP,PTP   ! Dynamic and thermal
+                                                   ! TKE production terms
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PSIGS     ! Vert. part of Sigma_s at t
+REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PWTH       ! heat flux
+REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PWRC       ! cloud water flux
+REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: PWSV       ! scalar flux
+
+!
+!
+END SUBROUTINE TURB_VER
+!
+END INTERFACE
+!
+END MODULE MODI_TURB_VER
diff --git a/src/arome/turb/modi_turb_ver_dyn_flux.F90 b/src/arome/turb/modi_turb_ver_dyn_flux.F90
new file mode 100644
index 000000000..a58d4f8a3
--- /dev/null
+++ b/src/arome/turb/modi_turb_ver_dyn_flux.F90
@@ -0,0 +1,86 @@
+!     ######spl
+     MODULE MODI_TURB_VER_DYN_FLUX 
+!    ####################
+!
+INTERFACE 
+!
+      SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL,                     &
+                      OCLOSE_OUT,OTURB_FLX,KRR,                     &
+                      HTURBDIM,PIMPL,PEXPL,                         &
+                      PTSTEP,                                       &
+                      HFMFILE,HLUOUT,                               &
+                      PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
+                      PCOSSLOPE,PSINSLOPE,                          &
+                      PRHODJ,                                       &
+                      PCDUEFF,PTAU11M,PTAU12M,PTAU33M,              &
+                      PTHLM,PRM,PSVM,PUM,PVM,PWM,PUSLOPEM,PVSLOPEM, &
+                      PTKEM,PLM,MFMOIST,PWU,PWV,                    &
+                      PRUS,PRVS,PRWS,                               &
+                      PDP,PTP                                )
+!
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR 
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
+LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
+                                 ! turbulent fluxes in the syncronous FM-file
+INTEGER,                INTENT(IN)   ::  KRR          ! number of moist var.
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
+                                                      ! turbulence scheme
+REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
+REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
+                                                      ! Metric coefficients
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PZZ          ! altitude of flux points
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
+                                                      ! normal to the ground surface
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCOSSLOPE    ! cosinus of the angle 
+                                      ! between i and the slope vector
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE    ! sinus of the angle 
+                                      ! between i and the slope vector
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST      ! moist mass flux dual scheme
+
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCDUEFF     ! Cd * || u || at time t
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU11M      ! <uu> in the axes linked 
+       ! to the maximum slope direction and the surface normal and the binormal 
+       ! at time t - dt
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU12M      ! <uv> in the same axes
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU33M      ! <ww> in the same axes
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PUM,PVM,PWM,PTHLM
+  ! Wind at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PUSLOPEM     ! wind component along the 
+                                     ! maximum slope direction
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PVSLOPEM     ! wind component along the 
+                                     ! direction normal to the maximum slope one
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PWU          ! momentum flux u'w'
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PWV          ! momentum flux v'w'
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT)   ::  PRUS, PRVS, PRWS
+                            ! cumulated sources for the prognostic variables
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT)::  PDP,PTP   ! Dynamic and thermal
+                                                   ! TKE production terms
+!
+!
+!
+END SUBROUTINE TURB_VER_DYN_FLUX
+!
+END INTERFACE
+!
+END MODULE MODI_TURB_VER_DYN_FLUX
diff --git a/src/arome/turb/modi_turb_ver_sv_corr.F90 b/src/arome/turb/modi_turb_ver_sv_corr.F90
new file mode 100644
index 000000000..31a993729
--- /dev/null
+++ b/src/arome/turb/modi_turb_ver_sv_corr.F90
@@ -0,0 +1,44 @@
+!     ######spl
+     MODULE MODI_TURB_VER_SV_CORR
+!    ####################
+!
+INTERFACE 
+!
+      SUBROUTINE TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,                    &
+                      PDZZ,                                         &
+                      PTHLM,PRM,PTHVREF,                            &
+                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PPHI3,PPSI3,  &
+                      PWM,PSVM,                                     &
+                      PTKEM,PLM,PLEPS,PPSI_SV                       )
+!
+INTEGER,                 INTENT(IN)  ::  KKA, KKU ! near ground and uppest atmosphere array indexes
+INTEGER,                 INTENT(IN)  ::  KKL     ! +1 if grid goes from ground to atmosphere top, -1 otherwise
+INTEGER,                INTENT(IN)   ::  KRR          ! number of moist var.
+INTEGER,                INTENT(IN)   ::  KRRL         ! number of liquid var.
+INTEGER,                INTENT(IN)   ::  KRRI         ! number of ice var.
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDZZ 
+                                                      ! Metric coefficients
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHLM        ! potential temperature at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM          ! Mixing ratios at t-Delta t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! reference Thv
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM        ! normalized 
+                  ! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PPHI3        ! Inv.Turb.Sch.for temperature
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PPSI3        ! Inv.Turb.Sch.for humidity
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PWM          ! w at time t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM         ! scalar var. at t-Delta t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS        ! dissipative length   
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PPSI_SV      ! Inv.Turb.Sch.for scalars
+                            ! cumulated sources for the prognostic variables
+!
+!
+END SUBROUTINE TURB_VER_SV_CORR
+!
+END INTERFACE
+!
+END MODULE MODI_TURB_VER_SV_CORR
diff --git a/src/arome/turb/modi_turb_ver_sv_flux.F90 b/src/arome/turb/modi_turb_ver_sv_flux.F90
new file mode 100644
index 000000000..dd10b563a
--- /dev/null
+++ b/src/arome/turb/modi_turb_ver_sv_flux.F90
@@ -0,0 +1,65 @@
+!     ######spl
+     MODULE MODI_TURB_VER_SV_FLUX 
+!    ####################
+!
+INTERFACE 
+!
+      SUBROUTINE TURB_VER_SV_FLUX(KKA,KKU,KKL,                      &
+                      OCLOSE_OUT,OTURB_FLX,HTURBDIM,                &
+                      PIMPL,PEXPL,                                  &
+                      PTSTEP,                                       &
+                      HFMFILE,HLUOUT,                               &
+                      PDZZ,PDIRCOSZW,                               &
+                      PRHODJ,PWM,                                   &
+                      PSFSVM,PSFSVP,                                &
+                      PSVM,                                         &
+                      PTKEM,PLM,MFMOIST,PPSI_SV,                    &
+                      PRSVS,PWSV                                    )
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
+LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
+                                 ! turbulent fluxes in the syncronous FM-file
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+                                                      ! turbulence scheme
+REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
+REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDZZ 
+                                                      ! Metric coefficients
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
+                                                      ! normal to the ground surface
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST      ! moist mass flux dual scheme
+
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSFSVM       ! t - deltat 
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSFSVP       ! t + deltat 
+!
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM         ! scalar var. at t-Delta t
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PWM          ! vertical wind
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PPSI_SV      ! Inv.Turb.Sch.for scalars
+!
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS
+                            ! cumulated sources for the prognostic variables
+REAL, DIMENSION(:,:,:,:), INTENT(OUT)  :: PWSV        ! scalar flux
+
+!
+!
+END SUBROUTINE TURB_VER_SV_FLUX
+!
+END INTERFACE
+!
+END MODULE MODI_TURB_VER_SV_FLUX
diff --git a/src/arome/turb/modi_turb_ver_thermo_corr.F90 b/src/arome/turb/modi_turb_ver_thermo_corr.F90
new file mode 100644
index 000000000..43d35b770
--- /dev/null
+++ b/src/arome/turb/modi_turb_ver_thermo_corr.F90
@@ -0,0 +1,107 @@
+!     ######spl
+     MODULE MODI_TURB_VER_THERMO_CORR
+!    ####################
+!
+INTERFACE 
+!
+      SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
+                      OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
+                      PIMPL,PEXPL,                                  &
+                      HFMFILE,HLUOUT,                               &
+                      PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,           &
+                      PRHODJ,PTHVREF,                               &
+                      PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
+                      PWM,PTHLM,PRM,PSVM,                           &
+                      PTKEM,PLM,PLEPS,                              &
+                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,              &
+                      PBETA, PSQRT_TKE, PDTH_DZ, PDR_DZ, PRED2TH3,  &
+                      PRED2R3, PRED2THR3, PBLL_O_E, PETHETA,        &
+                      PEMOIST, PREDTH1, PREDR1, PPHI3, PPSI3, PD,   &
+                      PFWTH,PFWR,PFTH2,PFR2,PFTHR,                  &
+                      PTHLP,PRP,MFMOIST,PSIGS                  )
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR 
+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)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
+LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
+                                 ! turbulent fluxes in the syncronous FM-file
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+                                                      ! turbulence scheme
+CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
+REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDZZ, PDXX, PDYY, PDZX, PDZY
+                                                      ! Metric coefficients
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
+                                                      ! normal to the ground surface
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST      ! moist mass flux dual scheme
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! ref. state Virtual 
+                                                      ! Potential Temperature 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSFTHM,PSFRM ! surface fluxes at time
+!                                                     ! t - deltat 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSFTHP,PSFRP ! surface fluxes at time
+!                                                     ! t + deltat 
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PWM 
+! Vertical wind
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHLM 
+! potential temperature at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM          ! Mixing ratios 
+                                                      ! at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM         ! Mixing ratios 
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS        ! dissipative length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM        ! normalized 
+                  ! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PBETA        ! buoyancy coefficient
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSQRT_TKE    ! sqrt(e)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDTH_DZ      ! d(th)/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDR_DZ       ! d(rt)/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2TH3     ! 3D Redeslperger number R*2_th
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2R3      ! 3D Redeslperger number R*2_r
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2THR3    ! 3D Redeslperger number R*2_thr
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PBLL_O_E     ! beta * Lk * Leps / tke
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PETHETA      ! Coefficient for theta in theta_v computation
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PEMOIST      ! Coefficient for r in theta_v computation
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PREDTH1      ! 1D Redelsperger number for Th
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PREDR1       ! 1D Redelsperger number for r
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PPHI3        ! Prandtl number for temperature
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PPSI3        ! Prandtl number for vapor
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PD           ! Denominator in Prandtl numbers
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFWTH        ! d(w'2th' )/dz (at flux point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFWR         ! d(w'2r'  )/dz (at flux point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFTH2        ! d(w'th'2 )/dz (at mass point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFR2         ! d(w'r'2  )/dz (at mass point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFTHR        ! d(w'th'r')/dz (at mass point)
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHLP      ! guess of thl at t+ deltat
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRP        ! guess of r at t+ deltat
+!
+REAL, DIMENSION(:,:,:),   INTENT(OUT)  ::  PSIGS     ! Vert. part of Sigma_s at t
+!
+!
+!
+END SUBROUTINE TURB_VER_THERMO_CORR
+!
+END INTERFACE
+!
+END MODULE MODI_TURB_VER_THERMO_CORR
diff --git a/src/arome/turb/modi_turb_ver_thermo_flux.F90 b/src/arome/turb/modi_turb_ver_thermo_flux.F90
new file mode 100644
index 000000000..19a050e79
--- /dev/null
+++ b/src/arome/turb/modi_turb_ver_thermo_flux.F90
@@ -0,0 +1,118 @@
+!     ######spl
+     MODULE MODI_TURB_VER_THERMO_FLUX 
+!    ####################
+!
+INTERFACE 
+!
+      SUBROUTINE TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
+                      OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
+                      PIMPL,PEXPL,                                  &
+                      PTSTEP,                                       &
+                      HFMFILE,HLUOUT,                               &
+                      PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
+                      PRHODJ,PTHVREF,                               &
+                      PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
+                      PWM,PTHLM,PRM,PSVM,                           &
+                      PTKEM,PLM,PLEPS,                              &
+                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE,    &
+                      PBETA, PSQRT_TKE, PDTH_DZ, PDR_DZ, PRED2TH3,  &
+                      PRED2R3, PRED2THR3, PBLL_O_E, PETHETA,        &
+                      PEMOIST, PREDTH1, PREDR1, PPHI3, PPSI3, PD,   &
+                      PFWTH,PFWR,PFTH2,PFR2,PFTHR,MFMOIST,PBL_DEPTH,&
+                      PWTHV,PRTHLS,PRRS,PTHLP,PRP,PTP,PWTH,PWRC )
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR O
+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)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
+LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
+                                 ! turbulent fluxes in the syncronous FM-file
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+                                                      ! turbulence scheme
+CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
+REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
+REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDZZ, PDXX, PDYY, PDZX, PDZY
+                                                      ! Metric coefficients
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
+                                                      ! normal to the ground surface
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PZZ          ! altitudes
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST      ! moist mass flux dual scheme
+
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! ref. state Virtual 
+                                                      ! Potential Temperature 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSFTHM,PSFRM ! surface fluxes at time
+!                                                     ! t - deltat 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSFTHP,PSFRP ! surface fluxes at time
+!                                                     ! t + deltat 
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PWM 
+! Vertical wind
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHLM 
+! potential temperature at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM          ! Mixing ratios 
+                                                      ! at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM         ! Mixing ratios 
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS        ! dissipative length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM        ! normalized 
+                  ! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFRAC_ICE    ! ri fraction of rc+ri
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PBETA        ! buoyancy coefficient
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSQRT_TKE    ! sqrt(e)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDTH_DZ      ! d(th)/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDR_DZ       ! d(rt)/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2TH3     ! 3D Redeslperger number R*2_th
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2R3      ! 3D Redeslperger number R*2_r
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2THR3    ! 3D Redeslperger number R*2_thr
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PBLL_O_E     ! beta * Lk * Leps / tke
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PETHETA      ! Coefficient for theta in theta_v computation
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PEMOIST      ! Coefficient for r in theta_v computation
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PREDTH1      ! 1D Redelsperger number for Th
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PREDR1       ! 1D Redelsperger number for r
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PPHI3        ! Prandtl number for temperature
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PPSI3        ! Prandtl number for vapor
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PD           ! Denominator in Prandtl numbers
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFWTH        ! d(w'2th' )/dz (at flux point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFWR         ! d(w'2r'  )/dz (at flux point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFTH2        ! d(w'th'2 )/dz (at mass point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFR2         ! d(w'r'2  )/dz (at mass point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFTHR        ! d(w'th'r')/dz (at mass point)
+REAL, DIMENSION(:,:),   INTENT(INOUT)::  PBL_DEPTH    ! BL depth
+REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PWTHV         ! buoyancy flux
+!
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHLS     ! cumulated source for theta
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS       ! cumulated source for rt
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PTHLP      ! guess of thl at t+ deltat
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRP        ! guess of r at t+ deltat
+!
+REAL, DIMENSION(:,:,:),   INTENT(INOUT)::  PTP       ! Dynamic and thermal
+                                                     ! TKE production terms
+!
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PWTH       ! heat flux
+REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PWRC       ! cloud water flux
+!
+!
+END SUBROUTINE TURB_VER_THERMO_FLUX
+!
+END INTERFACE
+!
+END MODULE MODI_TURB_VER_THERMO_FLUX
diff --git a/src/arome/turb/modi_update_lm.F90 b/src/arome/turb/modi_update_lm.F90
new file mode 100644
index 000000000..d2a31786e
--- /dev/null
+++ b/src/arome/turb/modi_update_lm.F90
@@ -0,0 +1,18 @@
+!     ######spl
+      MODULE MODI_UPDATE_LM
+!     ###################
+INTERFACE
+!
+SUBROUTINE UPDATE_LM(HLBCX,HLBCY,PLM,PLEPS)
+!
+CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X boundary type
+CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y boundary type
+!
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLM   ! mixing length
+REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLEPS ! dissipative length
+!
+END SUBROUTINE UPDATE_LM
+!
+END INTERFACE
+!
+END MODULE MODI_UPDATE_LM
diff --git a/src/arome/turb/prandtl.F90 b/src/arome/turb/prandtl.F90
new file mode 100644
index 000000000..3afb18cc4
--- /dev/null
+++ b/src/arome/turb/prandtl.F90
@@ -0,0 +1,501 @@
+!     ######spl
+      SUBROUTINE PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_DIAG,       &
+                         HTURBDIM,                             &
+                         HFMFILE,HLUOUT,                       &
+                         PDXX,PDYY,PDZZ,PDZX,PDZY,             &
+                         PTHVREF,PLOCPEXNM,PATHETA,PAMOIST,    &
+                         PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, &
+                         PREDTH1,PREDR1,                       &
+                         PRED2TH3, PRED2R3, PRED2THR3,         &
+                         PREDS1,PRED2THS3, PRED2RS3,           &
+                         PBLL_O_E,                             &
+                         PETHETA, PEMOIST                      )
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+      USE MODD_CTURB, ONLY : LHARAT
+!     ###########################################################
+!
+!
+!!****  *PRANDTL* - routine to compute the Prandtl turbulent numbers
+!!
+!!    PURPOSE
+!!    -------
+!       The purpose of this routine is to compute the Redelsperger 
+!     numbers and then get the turbulent Prandtl and Schmidt numbers:
+!       * for the heat fluxes     - PHI3 = 1/ Prandtl
+!       * for the moisture fluxes - PSI3 = 1/ Schmidt
+!
+!!**  METHOD
+!!    ------
+!!    The following steps are performed:
+!!
+!!     1 - default values of 1 are taken for phi3 and psi3 and different masks
+!!       are defined depending on the presence of turbulence, stratification and
+!!       humidity. The 1D Redelsperger numbers are computed  
+!!         * ZREDTH1 : (g / THVREF ) (LT**2 / TKE ) ETHETA (D Theta / Dz)   
+!!         * ZREDR1  : (g / THVREF ) (LT**2 / TKE ) EMOIST (D TW    / Dz)  
+!!     2 - 3D Redelsperger numbers are computed only for turbulent 
+!!       grid points where  ZREDTH1 or ZREDR1 are > 0.
+!!     3 - PHI3 is  computed only for turbulent grid points where ZREDTH1 > 0
+!!      (turbulent thermally stratified points)
+!!     4 - PSI3 is computed only for turbulent grid points where ZREDR1 > 0
+!!      (turbulent moist points)
+!!    
+!!
+!!    EXTERNAL
+!!    --------
+!!      FUNCTIONs ETHETA and EMOIST  :  
+!!            allows to compute the coefficients 
+!!            for the turbulent correlation between any variable
+!!            and the virtual potential temperature, of its correlations 
+!!            with the conservative potential temperature and the humidity 
+!!            conservative variable:
+!!            -------              -------              -------
+!!            A' Thv'  =  ETHETA   A' Thl'  +  EMOIST   A' Rnp'  
+!!
+!!      GX_M_M, GY_M_M, GZ_M_M :  Cartesian gradient operators
+!!      MZM : Shuman function (mean operator in the z direction)
+!!      Module MODI_ETHETA    : interface module for ETHETA
+!!      Module MODI_EMOIST    : interface module for EMOIST
+!!      Module MODI_SHUMAN    : interface module for Shuman operators
+!!
+!!    IMPLICIT ARGUMENTS
+!!    ------------------
+!!      Module MODD_CST : contains physical constants
+!!           XG         : gravity constant
+!!
+!!      Module MODD_CTURB: contains the set of constants for
+!!                        the turbulence scheme
+!!       XCTV,XCPR2    : constants for the turbulent prandtl numbers
+!!       XTKEMIN        : minimum value allowed for the TKE
+!!
+!!      Module MODD_PARAMETERS 
+!!       JPVEXT_TURB         : number of vertical marginal points
+!!
+!!    REFERENCE
+!!    ---------
+!!      Book 2 of documentation (routine PRANDTL)
+!!      Book 1 of documentation (Chapter: Turbulence)
+!!
+!!    AUTHOR
+!!    ------
+!!      Joan Cuxart             * INM and Meteo-France *
+!!
+!!    MODIFICATIONS
+!!    -------------
+!!      Original         18/10/94
+!!      Modifications: Feb 14, 1995 (J.Cuxart and J.Stein) 
+!!                                  Doctorization and Optimization
+!!      Modifications: March 21, 1995 (J.M. Carriere) 
+!!                                  Introduction of cloud water
+!!      Modifications: March 21, 1995 (J. Cuxart and J.Stein)
+!!                                  Phi3 and Psi3 at w point + cleaning
+!!      Modifications: July 2, 1995 (J.Cuxart and Ph.Bougeault)
+!!                         change the value of Phi3 and Psi3 if negative
+!!      Modifications: Sept 20, 1995 (J. Stein, J. Cuxart, J.L. Redelsperger)
+!!                         remove the Where + use REDTH1+REDR1 for the tests
+!!      Modifications: October 10, 1995 (J. Cuxart and J.Stein)
+!!                         Psi3 for tPREDS1he scalar variables
+!!      Modifications: February 27, 1996 (J.Stein) optimization
+!!      Modifications: June 15, 1996 (P.Jabouille) return to the previous
+!!                          computation of Phi3 and Psi3
+!!      Modifications: October 10, 1996 (J. Stein) change the temporal
+!!                          discretization
+!!      Modifications: May 23, 1997 (J. Stein) bug in 3D Redels number at ground
+!!                                             with orography
+!!      Modifications: Feb 20, 1998 (J. Stein) bug in all the 3D cases due to
+!!                                             the use of ZW1 instead of ZW2
+!!                     Feb 20, 2003 (JP Pinty) Add PFRAC_ICE
+!!                     July    2005 (Tomas, Masson) implicitation of PHI3 and PSI3
+!!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
+!!                                              change of YCOMMENT
+!!                     2012-02 Y. Seity,  add possibility to run with reversed 
+!!                                               vertical levels
+!!      Modifications: July 2015    (Wim de Rooy) LHARAT (Racmo turbulence) switch
+!! --------------------------------------------------------------------------
+!       
+!*      0. DECLARATIONS
+!          ------------
+!
+USE MODD_CST
+USE MODD_CONF
+USE MODD_CTURB
+USE MODD_PARAMETERS
+!
+USE MODI_GRADIENT_M
+USE MODI_EMOIST
+USE MODI_ETHETA
+USE MODI_SHUMAN, ONLY: MZM
+USE MODE_FMWRIT
+!
+IMPLICIT NONE
+!
+!
+!*      0.1  declarations of arguments
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
+
+INTEGER,                INTENT(IN)   :: KRR           ! number of moist var.
+INTEGER,                INTENT(IN)   :: KRRI          ! number of ice var.
+!
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening
+LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
+                                 ! diagnostic fields in the syncronous FM-file
+CHARACTER*4           , INTENT(IN)   ::  HTURBDIM     ! Kind of turbulence param.
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
+                                                  ! metric coefficients
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF  ! Virtual Potential Temp.
+                                                  ! of the reference state
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM ! Lv(T)/Cp/Exner at t-1 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM      ! Turbulent Mixing length
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS    ! Dissipative length
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHLM,PTKEM! Conservative Potential 
+                                                  ! Temperature and TKE at t-1
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM      ! Mixing ratios at  t-1
+                                                  ! with PRM(:,:,:,1) = cons.
+                                                  ! mixing ratio
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM     ! Scalars at t-1      
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM
+                                  ! s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
+!
+!
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PREDTH1 ! Redelsperger number R_theta
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PREDR1  ! Redelsperger number R_q
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2TH3 ! Redelsperger number R*2_theta
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2R3  ! Redelsperger number R*2_q
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PRED2THR3! Redelsperger number R*2_thq
+REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PREDS1   ! Redelsperger number R_s
+REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PRED2THS3! Redelsperger number R*2_thsv
+REAL, DIMENSION(:,:,:,:), INTENT(OUT)::  PRED2RS3 ! Redelsperger number R*2_qsv
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PBLL_O_E! beta*Lk*Leps/tke
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PETHETA ! coefficient E_theta
+REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PEMOIST ! coefficient E_moist
+!
+!
+!       0.2  declaration of local variables
+!
+REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) ::  &
+                  ZW1, ZW2, ZW3
+!                                                 working variables
+!                                                     
+INTEGER :: IKB      ! vertical index value for the first inner mass point
+INTEGER :: IKE      ! vertical index value for the last inner mass point
+INTEGER             :: IRESP        ! Return code of FM routines
+INTEGER             :: ILENG        ! Length of the data field in LFIFM file
+INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
+INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
+INTEGER::  ISV                      ! number of scalar variables       
+INTEGER::  JSV                      ! loop index for the scalar variables  
+
+INTEGER :: JLOOP
+REAL    :: ZMINVAL
+! ---------------------------------------------------------------------------
+!
+!
+!*      1.  DEFAULT VALUES,  1D REDELSPERGER NUMBERS 
+!           ----------------------------------------
+!
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
+IF (LHOOK) CALL DR_HOOK('PRANDTL',0,ZHOOK_HANDLE)
+
+IF (LHARAT) THEN
+PREDTH1(:,:,:)=0.
+PREDR1(:,:,:)=0.
+PRED2TH3(:,:,:)=0.
+PRED2R3(:,:,:)=0.
+PRED2THR3(:,:,:)=0.
+PREDS1(:,:,:,:)=0.
+PRED2THS3(:,:,:,:)=0.
+PRED2RS3(:,:,:,:)=0.
+PBLL_O_E(:,:,:)=0.
+ENDIF
+!
+IKB = KKA+JPVEXT_TURB*KKL
+IKE = KKU-JPVEXT_TURB*KKL 
+ILENG=SIZE(PTHLM,1)*SIZE(PTHLM,2)*SIZE(PTHLM,3)
+ISV  =SIZE(PSVM,4)
+!
+PETHETA(:,:,:) = MZM(ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM), KKA, KKU, KKL)
+PEMOIST(:,:,:) = MZM(EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM), KKA, KKU, KKL)
+PETHETA(:,:,KKA) = 2.*PETHETA(:,:,IKB) - PETHETA(:,:,IKB+KKL)
+PEMOIST(:,:,KKA) = 2.*PEMOIST(:,:,IKB) - PEMOIST(:,:,IKB+KKL)
+!
+!---------------------------------------------------------------------------
+IF (.NOT. LHARAT) THEN
+!
+!          1.3 1D Redelsperger numbers
+!
+PBLL_O_E(:,:,:) = MZM(XG / PTHVREF(:,:,:) * PLM(:,:,:) * PLEPS(:,:,:) / PTKEM(:,:,:), KKA, KKU, KKL)
+IF (KRR /= 0) THEN                ! moist case
+  PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:) * PETHETA(:,:,:) * &
+                   & GZ_M_W(PTHLM,PDZZ, KKA, KKU, KKL)
+  PREDR1(:,:,:) = XCTV*PBLL_O_E(:,:,:) * PEMOIST(:,:,:) * &
+                   & GZ_M_W(PRM(:,:,:,1),PDZZ, KKA, KKU, KKL)
+ELSE                              ! dry case
+  PREDTH1(:,:,:)= XCTV*PBLL_O_E(:,:,:)  * GZ_M_W(PTHLM,PDZZ, KKA, KKU, KKL)
+  PREDR1(:,:,:) = 0.
+END IF
+!
+!       3. Limits on 1D Redelperger numbers
+!          --------------------------------
+!
+ZMINVAL = (1.-1./XPHI_LIM)
+!
+ZW1 = 1.
+ZW2 = 1.
+!
+WHERE (PREDTH1+PREDR1<-ZMINVAL)
+  ZW1 = (-ZMINVAL) / (PREDTH1+PREDR1)
+END WHERE
+!
+WHERE (PREDTH1<-ZMINVAL)
+  ZW2 = (-ZMINVAL) / (PREDTH1)
+END WHERE
+ZW2 = MIN(ZW1,ZW2)
+!
+ZW1 = 1.
+WHERE (PREDR1<-ZMINVAL)
+  ZW1 = (-ZMINVAL) / (PREDR1)
+END WHERE
+ZW1 = MIN(ZW2,ZW1)
+!
+!
+!       3. Modification of Mixing length and dissipative length
+!          ----------------------------------------------------
+!
+PBLL_O_E(:,:,:) = PBLL_O_E(:,:,:) * ZW1(:,:,:)
+PREDTH1 (:,:,:) = PREDTH1 (:,:,:) * ZW1(:,:,:)
+PREDR1  (:,:,:) = PREDR1  (:,:,:) * ZW1(:,:,:)
+!
+!       4. Threshold for very small (in absolute value) Redelperger numbers
+!          ----------------------------------------------------------------
+!
+ZW2=SIGN(1.,PREDTH1(:,:,:))
+PREDTH1(:,:,:)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDTH1(:,:,:))
+!
+IF (KRR /= 0) THEN                ! dry case
+  ZW2=SIGN(1.,PREDR1(:,:,:))
+  PREDR1(:,:,:)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDR1(:,:,:))
+END IF
+!
+!
+!---------------------------------------------------------------------------
+!
+!          For the scalar variables
+DO JSV=1,ISV
+  PREDS1(:,:,:,JSV)=XCTV*PBLL_O_E(:,:,:)*GZ_M_W(PSVM(:,:,:,JSV),PDZZ, KKA, KKU, KKL)
+END DO
+!
+DO JSV=1,ISV
+  ZW2=SIGN(1.,PREDS1(:,:,:,JSV))
+  PREDS1(:,:,:,JSV)= ZW2(:,:,:) * MAX(1.E-30, ZW2(:,:,:)*PREDS1(:,:,:,JSV))
+END DO
+!
+!---------------------------------------------------------------------------
+!
+!*      2.  3D REDELSPERGER NUMBERS
+!           ------------------------
+!
+IF(HTURBDIM=='1DIM') THEN        ! 1D case
+!
+!
+  PRED2TH3(:,:,:)  = PREDTH1(:,:,:)**2
+!
+  PRED2R3(:,:,:)   = PREDR1(:,:,:) **2
+!
+  PRED2THR3(:,:,:) = PREDTH1(:,:,:) * PREDR1(:,:,:)
+!
+ELSE IF (L2D) THEN                      ! 3D case in a 2D model
+!
+  IF (KRR /= 0) THEN                 ! moist 3D case
+    PRED2TH3(:,:,:)= PREDTH1(:,:,:)**2+(XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) )**2 * &
+      MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2, KKA, KKU, KKL)
+    PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL)
+!
+    PRED2R3(:,:,:)= PREDR1(:,:,:)**2 + (XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:))**2 * &
+        MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2, KKA, KKU, KKL)
+    PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+KKL)
+!
+    PRED2THR3(:,:,:)= PREDR1(:,:,:) * PREDTH1(:,:,:) +  XCTV**2*PBLL_O_E(:,:,:)**2 *   &
+                  PEMOIST(:,:,:) * PETHETA(:,:,:) *                         &
+      MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*     &
+                     GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL), KKA, KKU, KKL)
+    PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+KKL)
+!
+  ELSE                 ! dry 3D case in a 2D model
+    PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 +  XCTV**2*PBLL_O_E(:,:,:)**2 *     &
+      MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2, KKA, KKU, KKL)
+    PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL)
+!
+    PRED2R3(:,:,:) = 0.
+!
+    PRED2THR3(:,:,:) = 0.
+!
+  END IF
+!
+ELSE                                 ! 3D case in a 3D model
+!
+  IF (KRR /= 0) THEN                 ! moist 3D case
+    PRED2TH3(:,:,:)= PREDTH1(:,:,:)**2 +  ( XCTV*PBLL_O_E(:,:,:)*PETHETA(:,:,:) )**2 * &
+      MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2 &
+      + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL)**2, KKA, KKU, KKL)
+    PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL)
+!
+    PRED2R3(:,:,:)= PREDR1(:,:,:)**2 + (XCTV*PBLL_O_E(:,:,:)*PEMOIST(:,:,:))**2 *      &
+        MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2 + &
+        GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, KKA, KKU, KKL)**2, KKA, KKU, KKL)
+    PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+KKL)
+!
+    PRED2THR3(:,:,:)= PREDR1(:,:,:) * PREDTH1(:,:,:) +  XCTV**2*PBLL_O_E(:,:,:)**2 *   &
+         PEMOIST(:,:,:) * PETHETA(:,:,:) *                            &
+         MZM(GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*   &
+         GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)+                           &
+         GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, KKA, KKU, KKL)*                    &
+         GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL), KKA, KKU, KKL)
+    PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+KKL)
+!
+  ELSE                 ! dry 3D case in a 3D model
+    PRED2TH3(:,:,:) = PREDTH1(:,:,:)**2 +  XCTV**2*PBLL_O_E(:,:,:)**2 *                &
+      MZM(GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)**2 &
+      + GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL)**2, KKA, KKU, KKL)
+    PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL)
+!
+    PRED2R3(:,:,:) = 0.
+!
+    PRED2THR3(:,:,:) = 0.
+!
+  END IF
+!
+END IF   ! end of the if structure on the turbulence dimensionnality
+!
+!
+!---------------------------------------------------------------------------
+!
+!           5. Prandtl numbers for scalars
+!              ---------------------------
+DO JSV=1,ISV
+!
+  IF(HTURBDIM=='1DIM') THEN
+!        1D case
+    PRED2THS3(:,:,:,JSV)  = PREDS1(:,:,:,JSV) * PREDTH1(:,:,:)
+    IF (KRR /= 0) THEN
+      PRED2RS3(:,:,:,JSV)   = PREDR1(:,:,:) *PREDS1(:,:,:,JSV)
+    ELSE
+      PRED2RS3(:,:,:,JSV)   = 0.
+    END IF
+!
+  ELSE  IF (L2D) THEN ! 3D case in a 2D model
+!
+    IF (KRR /= 0) THEN
+      ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA
+    ELSE
+      ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL)
+    END IF
+    PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV)   +        &
+                       ZW1*                                              &
+                       MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*       &
+                           GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL),                 &
+                           KKA, KKU, KKL)
+!
+    IF (KRR /= 0) THEN
+      PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV)   +        &
+                       ZW1 * PEMOIST *                                   &
+                       MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*       &
+                           GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL),          &
+                           KKA, KKU, KKL)
+    ELSE
+      PRED2RS3(:,:,:,JSV) = 0.
+    END IF
+!
+  ELSE ! 3D case in a 3D model
+!
+    IF (KRR /= 0) THEN
+      ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL) *PETHETA
+    ELSE
+      ZW1 = MZM((XG / PTHVREF * PLM * PLEPS / PTKEM)**2, KKA, KKU, KKL)
+    END IF
+    PRED2THS3(:,:,:,JSV) = PREDTH1(:,:,:) * PREDS1(:,:,:,JSV)   +        &
+                       ZW1*                                              &
+                       MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*       &
+                           GX_M_M(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)                  &
+                          +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, KKA, KKU, KKL)*       &
+                           GY_M_M(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL),                 &
+                           KKA, KKU, KKL)
+!
+    IF (KRR /= 0) THEN
+      PRED2RS3(:,:,:,JSV) = PREDR1(:,:,:) * PREDS1(:,:,:,JSV)   +        &
+                       ZW1 * PEMOIST *                                   &
+                       MZM(GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX, KKA, KKU, KKL)*       &
+                           GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)           &
+                          +GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY, KKA, KKU, KKL)*       &
+                           GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY, KKA, KKU, KKL),          &
+                           KKA, KKU, KKL)
+    ELSE
+      PRED2RS3(:,:,:,JSV) = 0.
+    END IF
+!
+  END IF ! end of HTURBDIM if-block
+!
+END DO
+!
+!---------------------------------------------------------------------------
+!
+!*          6. SAVES THE REDELSPERGER NUMBERS
+!              ------------------------------
+!
+IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
+  !
+  ! stores the RED_TH1
+  YRECFM  ='RED_TH1'
+  YCOMMENT='X_Y_Z_RED_TH1 (0)'
+  IGRID   = 4
+  ILENCH=LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PREDTH1,IGRID,ILENCH,YCOMMENT,IRESP)
+  !
+  ! stores the RED_R1
+  YRECFM  ='RED_R1'
+  YCOMMENT='X_Y_Z_RED_R1 (0)'
+  IGRID   = 4
+  ILENCH=LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PREDR1,IGRID,ILENCH,YCOMMENT,IRESP)
+  !
+  ! stores the RED2_TH3
+  YRECFM  ='RED2_TH3'
+  YCOMMENT='X_Y_Z_RED2_TH3 (0)'
+  IGRID   = 4
+  ILENCH=LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2TH3,IGRID,ILENCH,YCOMMENT,IRESP)
+  !
+  ! stores the RED2_R3
+  YRECFM  ='RED2_R3'
+  YCOMMENT='X_Y_Z_RED2_R3 (0)'
+  IGRID   = 4
+  ILENCH=LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2R3,IGRID,ILENCH,YCOMMENT,IRESP)
+  !
+  ! stores the RED2_THR3
+  YRECFM  ='RED2_THR3'
+  YCOMMENT='X_Y_Z_RED2_THR3 (0)'
+  IGRID   = 4
+  ILENCH=LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRED2THR3,IGRID,ILENCH,YCOMMENT,IRESP)
+END IF
+!
+!---------------------------------------------------------------------------
+ENDIF ! (Done only if LHARAT is FALSE)
+!
+IF (LHOOK) CALL DR_HOOK('PRANDTL',1,ZHOOK_HANDLE)
+END SUBROUTINE PRANDTL
diff --git a/src/common/turb/mode_th_r_from_thl_rt_1d.F90 b/src/arome/turb/th_r_from_thl_rt_1d.F90
similarity index 92%
rename from src/common/turb/mode_th_r_from_thl_rt_1d.F90
rename to src/arome/turb/th_r_from_thl_rt_1d.F90
index 2356b4f3a..15a6e449e 100644
--- a/src/common/turb/mode_th_r_from_thl_rt_1d.F90
+++ b/src/arome/turb/th_r_from_thl_rt_1d.F90
@@ -1,10 +1,4 @@
-!MNH_LIC Copyright 2006-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.
-MODULE MODE_TH_R_FROM_THL_RT_1D
-IMPLICIT NONE
-CONTAINS
+!     ######spl
       SUBROUTINE TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE,PP,             &
                                   PTHL, PRT, PTH, PRV, PRL, PRI,         &
                                   PRSATW, PRSATI, PRR, PRS, PRG, PRH     )
@@ -41,7 +35,6 @@ CONTAINS
 !!      S. Riette April 2011 : ice added, allow ZRLTEMP to be negative
 !!                             we use dQsat/dT to help convergence
 !!                             use of optional PRR, PRS, PRG, PRH
-!!      S. Riette Nov 2016: support for HFRAC_ICE='S'
 !!
 !! --------------------------------------------------------------------------
 !
@@ -51,7 +44,6 @@ CONTAINS
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 USE MODD_CST!, ONLY: XP00, XRD, XCPD, XCPV, XCL, XCI, XLVTT, XTT, XLSTT
-USE MODD_DYN_n, ONLY : LOCEAN
 USE MODE_THERMO
 !
 IMPLICIT NONE
@@ -59,7 +51,7 @@ IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
 !
-CHARACTER(LEN=1),   INTENT(IN) :: HFRAC_ICE
+CHARACTER*1         , INTENT(IN) :: HFRAC_ICE
 REAL, DIMENSION(:), INTENT(INOUT) :: PFRAC_ICE
 REAL, DIMENSION(:), INTENT(IN) :: PP          ! Pressure
 REAL, DIMENSION(:), INTENT(IN) :: PTHL    ! thetal to transform into th
@@ -126,11 +118,8 @@ ENDDO
 !         ---------
 
 DO II=1,JITER
-  IF (LOCEAN) THEN
-    ZT=PTH                  
-  ELSE
-    ZT(:)=PTH(:)*ZEXN(:)
-  END IF
+  ZT(:)=PTH(:)*ZEXN(:)
+
   !Computation of liquid/ice fractions
   PFRAC_ICE(:) = 0.
   DO J=1, SIZE(PFRAC_ICE, 1)
@@ -206,4 +195,3 @@ CONTAINS
 INCLUDE "compute_frac_ice.func.h"
 !
 END SUBROUTINE TH_R_FROM_THL_RT_1D
-END MODULE MODE_TH_R_FROM_THL_RT_1D
diff --git a/src/common/turb/mode_th_r_from_thl_rt_2d.F90 b/src/arome/turb/th_r_from_thl_rt_2d.F90
similarity index 87%
rename from src/common/turb/mode_th_r_from_thl_rt_2d.F90
rename to src/arome/turb/th_r_from_thl_rt_2d.F90
index e4292fa12..5d1ff0e08 100644
--- a/src/common/turb/mode_th_r_from_thl_rt_2d.F90
+++ b/src/arome/turb/th_r_from_thl_rt_2d.F90
@@ -1,10 +1,4 @@
-!MNH_LIC Copyright 2006-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.
-MODULE MODE_TH_R_FROM_THL_RT_2D
-IMPLICIT NONE
-CONTAINS
+!     ######spl
       SUBROUTINE TH_R_FROM_THL_RT_2D(HFRAC_ICE,PFRAC_ICE,PP,             &
                                   PTHL, PRT, PTH, PRV, PRL, PRI,         &
                                   PRSATW, PRSATI, PRR, PRS, PRG, PRH     )
@@ -46,7 +40,7 @@ CONTAINS
 !          ------------
 !
 !
-USE MODE_TH_R_FROM_THL_RT_3D, ONLY: TH_R_FROM_THL_RT_3D
+USE MODI_TH_R_FROM_THL_RT_3D
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 
@@ -55,7 +49,7 @@ IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
 !
-CHARACTER(LEN=1),     INTENT(IN) :: HFRAC_ICE
+CHARACTER*1           , INTENT(IN) :: HFRAC_ICE
 REAL, DIMENSION(:,:), INTENT(INOUT) :: PFRAC_ICE
 REAL, DIMENSION(:,:), INTENT(IN) :: PP     ! Pressure
 REAL, DIMENSION(:,:), INTENT(IN) :: PTHL   ! Liquid pot. temp.
@@ -107,5 +101,3 @@ ENDDO
 IF (LHOOK) CALL DR_HOOK('TH_R_FROM_THL_RT_2D',1,ZHOOK_HANDLE)
 
 END SUBROUTINE TH_R_FROM_THL_RT_2D
-END MODULE MODE_TH_R_FROM_THL_RT_2D
-
diff --git a/src/common/turb/mode_th_r_from_thl_rt_3d.F90 b/src/arome/turb/th_r_from_thl_rt_3d.F90
similarity index 87%
rename from src/common/turb/mode_th_r_from_thl_rt_3d.F90
rename to src/arome/turb/th_r_from_thl_rt_3d.F90
index fb42b7101..473a9bcc2 100644
--- a/src/common/turb/mode_th_r_from_thl_rt_3d.F90
+++ b/src/arome/turb/th_r_from_thl_rt_3d.F90
@@ -1,10 +1,4 @@
-!MNH_LIC Copyright 2006-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.
-MODULE MODE_TH_R_FROM_THL_RT_3D
-IMPLICIT NONE
-CONTAINS      
+!     ######spl
       SUBROUTINE TH_R_FROM_THL_RT_3D(HFRAC_ICE,PFRAC_ICE,PP,             &
                                   PTHL, PRT, PTH, PRV, PRL, PRI, &
                                   PRSATW, PRSATI, PRR, PRS, PRG, PRH       )
@@ -45,7 +39,7 @@ CONTAINS
 !*      0. DECLARATIONS
 !          ------------
 !
-USE MODE_TH_R_FROM_THL_RT_1D, ONLY: TH_R_FROM_THL_RT_1D
+USE MODI_TH_R_FROM_THL_RT_1D
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !
@@ -54,7 +48,7 @@ IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
 !
-CHARACTER(LEN=1),       INTENT(IN) :: HFRAC_ICE
+CHARACTER*1         , INTENT(IN) :: HFRAC_ICE
 REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFRAC_ICE
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PP          ! Pressure
 REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHL    ! thetal to transform into th
@@ -104,4 +98,3 @@ ENDDO
 IF (LHOOK) CALL DR_HOOK('TH_R_FROM_THL_RT_3D',1,ZHOOK_HANDLE)
 
 END SUBROUTINE TH_R_FROM_THL_RT_3D
-END MODULE MODE_TH_R_FROM_THL_RT_3D
diff --git a/src/common/turb/mode_thl_rt_from_th_r_mf.F90 b/src/arome/turb/thl_rt_from_th_r_mf.F90
similarity index 90%
rename from src/common/turb/mode_thl_rt_from_th_r_mf.F90
rename to src/arome/turb/thl_rt_from_th_r_mf.F90
index bf72ab943..c9488f86b 100644
--- a/src/common/turb/mode_thl_rt_from_th_r_mf.F90
+++ b/src/arome/turb/thl_rt_from_th_r_mf.F90
@@ -1,10 +1,4 @@
-!MNH_LIC Copyright 1994-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.
-MODULE MODE_THL_RT_FROM_TH_R_MF
-IMPLICIT NONE
-CONTAINS
+!     ######spl
       SUBROUTINE THL_RT_FROM_TH_R_MF( KRR,KRRL,KRRI,                  &
                                       PTH, PR, PEXN, &
                                       PTHL, PRT                      )
@@ -120,4 +114,3 @@ ELSE
 END IF
 IF (LHOOK) CALL DR_HOOK('THL_RT_FRM_TH_R_MF',1,ZHOOK_HANDLE)
 END SUBROUTINE THL_RT_FROM_TH_R_MF
-END MODULE MODE_THL_RT_FROM_TH_R_MF
diff --git a/src/common/turb/mode_tke_eps_sources.F90 b/src/arome/turb/tke_eps_sources.F90
similarity index 66%
rename from src/common/turb/mode_tke_eps_sources.F90
rename to src/arome/turb/tke_eps_sources.F90
index a55c661ce..672987f18 100644
--- a/src/common/turb/mode_tke_eps_sources.F90
+++ b/src/arome/turb/tke_eps_sources.F90
@@ -1,18 +1,13 @@
-!MNH_LIC Copyright 1994-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.
-MODULE MODE_TKE_EPS_SOURCES
-IMPLICIT NONE
-CONTAINS
+!     ######spl
       SUBROUTINE TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKEM,PLM,PLEPS,PDP,  &
                     & PTRH,PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,        &
                     & PTSTEP,PIMPL,PEXPL,                              &
                     & HTURBLEN,HTURBDIM,                               &
-                    & TPFILE,OTURB_DIAG,                               &
-                    & PTP,PRTKES,PRTHLS,PCOEF_DISS,PTDIFF,PTDISS,&
-                    & TBUDGETS, KBUDGETS, &
-                    & PEDR, PTR,PDISS,PRTKESM                          )
+                    & HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,            &
+                 & PTP,PRTKES,PRTHLS,PCOEF_DISS,PTDIFF,PTDISS, &
+                 & PEDR,YDDDH, YDLDDH, YDMDDH)
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     ##################################################################
 !
 !
@@ -73,6 +68,7 @@ CONTAINS
 !!                          'CART' for cartesian box configuration
 !!                          'MASK' for budget zone defined by a mask 
 !!                          'NONE'  ' for no budget
+!!         NBUPROCCTR   : process counter used for each budget variable
 !!         LBU_RTKE     : logical for budget of RTKE (turbulent kinetic energy)
 !!                        .TRUE. = budget of RTKE       
 !!                        .FALSE. = no budget of RTKE
@@ -116,43 +112,35 @@ CONTAINS
 !!                                    vertical levels
 !!                     2014-11 Y. Seity,  add output terms for TKE DDHs budgets
 !! --------------------------------------------------------------------------
-!!                     2015-01 (J. Escobar) missing get_halo(ZRES) for JPHEXT<> 1 
-!!     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!  P. Wautelet    02/2020: use the new data structures and subroutines for budgets
-! --------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
 !             ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
-USE MODD_ARGSLIST_ll,    ONLY: LIST_ll
-USE MODD_BUDGET, ONLY: LBUDGET_TKE, LBUDGET_TH, NBUDGET_TKE, NBUDGET_TH, TBUDGETDATA
-USE MODD_CONF
 USE MODD_CST
+USE MODD_CONF
 USE MODD_CTURB
-USE MODD_DIAG_IN_RUN, ONLY : LDIAG_IN_RUN, XCURRENT_TKE_DISS
-USE MODD_FIELD, ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO, ONLY: TFILEDATA
-USE MODD_LES
 USE MODD_PARAMETERS
+USE MODD_BUDGET
+USE MODD_LES
+USE MODD_DIAG_IN_RUN, ONLY : LDIAG_IN_RUN, XCURRENT_TKE_DISS
 !
-USE MODE_BUDGET, ONLY: BUDGET_STORE_ADD, BUDGET_STORE_END, BUDGET_STORE_INIT
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-USE MODE_ll
-!
-USE MODI_GET_HALO
 USE MODI_GRADIENT_M
 USE MODI_GRADIENT_U
 USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
-USE MODI_LES_MEAN_SUBGRID
-USE MODE_TRIDIAG_TKE, ONLY: TRIDIAG_TKE
 USE MODI_SHUMAN , ONLY : DZM, DZF, MZM, MZF
+USE MODI_TRIDIAG 
+USE MODI_TRIDIAG_TKE
+USE MODI_BUDGET_DDH
+USE MODE_FMWRIT
+USE MODI_LES_MEAN_SUBGRID
 !
+USE DDH_MIX, ONLY  : TYP_DDH
+USE YOMLDDH, ONLY  : TLDDH
+USE YOMMDDH, ONLY  : TMDDH
+!
+!!!!!AROME!!USE MODE_ll
+!!!!!AROME!!USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 !
 IMPLICIT NONE
 !
@@ -172,29 +160,32 @@ REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PRHODJ       ! density * grid volume
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
                                                        ! metric coefficients
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PZZ          ! physical height w-pt
-REAL,                    INTENT(IN)   ::  PTSTEP       ! Time step 
+REAL,                    INTENT(IN)   ::  PTSTEP       ! Double Time step ( *.5 for
+                                                       ! the first time step ) 
 REAL,                    INTENT(IN)   ::  PEXPL, PIMPL ! Coef. temporal. disc.
-CHARACTER(LEN=4),        INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+CHARACTER*4,             INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
                                                        ! turbulence scheme
-CHARACTER(LEN=4),        INTENT(IN)   ::  HTURBLEN     ! kind of mixing length
-TYPE(TFILEDATA),         INTENT(IN)   ::  TPFILE       ! Output file
+CHARACTER*4,             INTENT(IN)   ::  HTURBLEN     ! kind of mixing length 
+CHARACTER(LEN=*),        INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                       ! FM-file
+CHARACTER(LEN=*),        INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                       ! model n
+LOGICAL,                 INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                       ! file opening
 LOGICAL,                 INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
                                   ! diagnostic fields in the syncronous FM-file
-REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PDP          ! Dyn. prod. of TKE
-REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PTRH
-REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PTP          ! Ther. prod. of TKE
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PDP, PTRH          ! Dyn. prod. of TKE
+REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PTP          ! Ther. prod. of TKE
 REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PRTKES       ! RHOD * Jacobian *
                                                        ! TKE at t+deltat
 REAL, DIMENSION(:,:,:),  INTENT(INOUT)::  PRTHLS       ! Source of Theta_l
 REAL, DIMENSION(:,:,:),  INTENT(IN)   ::  PCOEF_DISS   ! 1/(Cph*Exner)
-REAL, DIMENSION(:,:,:),  INTENT(OUT)  ::  PTDIFF       ! Diffusion TKE term
-REAL, DIMENSION(:,:,:),  INTENT(OUT)  ::  PTDISS       ! Dissipation TKE term
-TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
-INTEGER, INTENT(IN) :: KBUDGETS
-REAL, DIMENSION(:,:,:),  INTENT(OUT), OPTIONAL  ::  PTR          ! Transport prod. of TKE
-REAL, DIMENSION(:,:,:),  INTENT(OUT), OPTIONAL  ::  PDISS        ! Dissipation of TKE
-REAL, DIMENSION(:,:,:),  INTENT(OUT), OPTIONAL  ::  PEDR         ! EDR 
-REAL, DIMENSION(:,:,:),  INTENT(IN),  OPTIONAL  ::  PRTKESM      ! Advection source 
+REAL, DIMENSION(:,:,:),  INTENT(OUT)  ::  PTDIFF     ! Diffusion TKE term
+REAL, DIMENSION(:,:,:),  INTENT(OUT)  ::  PTDISS     ! Dissipation TKE term
+REAL, DIMENSION(:,:,:),  INTENT(OUT)   ::  PEDR         ! EDR 
+TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
+TYPE(TLDDH), INTENT(IN) :: YDLDDH
+TYPE(TMDDH), INTENT(IN) :: YDMDDH
 !
 !
 !
@@ -209,32 +200,39 @@ REAL, DIMENSION(SIZE(PTKEM,1),SIZE(PTKEM,2),SIZE(PTKEM,3))::         &
                    ! temporarily store some diagnostics stored in FM file
        ZFLX,     & ! horizontal or vertical flux of the treated variable
        ZSOURCE,  & ! source of evolution for the treated variable
-       ZKEFF,    & ! effectif diffusion coeff = LT * SQRT( TKE )
-       ZTR,ZRTKESM ! Transport term and Advective TKE source 
+       ZTR,      & ! turbulent transport of TKE 
+       ZKEFF       ! effectif diffusion coeff = LT * SQRT( TKE )
 LOGICAL,DIMENSION(SIZE(PTKEM,1),SIZE(PTKEM,2),SIZE(PTKEM,3)) :: GTKENEG
                    ! 3D mask .T. if TKE < XTKEMIN
 INTEGER             :: IIB,IIE,IJB,IJE,IKB,IKE
                                     ! Index values for the Beginning and End
                                     ! mass points of the domain 
 INTEGER             :: IIU,IJU,IKU  ! array size in the 3 dimensions 
+INTEGER             :: IRESP        ! Return code of FM routines
+INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
+INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
-TYPE(LIST_ll), POINTER :: TZFIELDDISS_ll ! list of fields to exchange
-INTEGER                :: IINFO_ll       ! return code of parallel routine
-TYPE(TFIELDDATA) :: TZFIELD
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
+!!!!!AROME!!TYPE(LIST_ll), POINTER :: TZFIELDDISS_ll ! list of fields to exchange
+!!!!!AROME!!INTEGER                :: IINFO_ll       ! return code of parallel routine
 !
+
 !----------------------------------------------------------------------------
-NULLIFY(TZFIELDDISS_ll)
+!!!!!AROME!!NULLIFY(TZFIELDDISS_ll)
 !
 !*       1.   PRELIMINARY COMPUTATIONS
 !             ------------------------
 !
-
-IF (LHOOK) CALL DR_HOOK('TKE_EPS_SOURCES',0,ZHOOK_HANDLE)
 !
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
+IF (LHOOK) CALL DR_HOOK('TKE_EPS_SOURCES',0,ZHOOK_HANDLE)
+IIB=1+JPHEXT
 IIU=SIZE(PTKEM,1)
+IIE=IIU-JPHEXT
+IJB=1+JPHEXT
 IJU=SIZE(PTKEM,2)
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE,IIU,IJU)
+IJE=IJU-JPHEXT
 IKB=KKA+JPVEXT_TURB*KKL
 IKE=KKU-JPVEXT_TURB*KKL
 !
@@ -261,12 +259,6 @@ END IF
 !
 !*       2.2  Explicit TKE sources except horizontal turbulent transport 
 !
-! Advection source (=0 in AROME)
-IF(PRESENT(PRTKESM)) THEN
-  ZRTKESM=PRTKESM
-ELSE
-  ZRTKESM=0.
-END IF
 !
 ! extrapolate the dynamic production with a 1/Z law from its value at the 
 ! W(IKB+1) value stored in PDP(IKB) to the mass localization tke(IKB)
@@ -275,8 +267,7 @@ PDP(:,:,IKB) = PDP(:,:,IKB) * (1. + PDZZ(:,:,IKB+KKL)/PDZZ(:,:,IKB))
 ! Compute the source terms for TKE: ( ADVECtion + NUMerical DIFFusion + ..)
 ! + (Dynamical Production) + (Thermal Production) - (dissipation) 
 ZFLX(:,:,:) = XCED * SQRT(PTKEM(:,:,:)) / PLEPS(:,:,:)
-ZSOURCE(:,:,:) = ( PRTKES(:,:,:) +  ZRTKESM(:,:,:) ) / PRHODJ(:,:,:) &
-   - PTKEM(:,:,:) / PTSTEP &
+ZSOURCE(:,:,:) = PRTKES(:,:,:) / PRHODJ(:,:,:) - PTKEM(:,:,:) / PTSTEP &
    + PDP(:,:,:) + PTP(:,:,:) + ZTR(:,:,:) - PEXPL * ZFLX(:,:,:) * PTKEM(:,:,:)
 !
 !*       2.2  implicit vertical TKE transport
@@ -292,30 +283,28 @@ ZA(:,:,:)     = - PTSTEP * XCET * &
 !
 CALL TRIDIAG_TKE(KKA,KKU,KKL,PTKEM,ZA,PTSTEP,PEXPL,PIMPL,PRHODJ,&
             & ZSOURCE,PTSTEP*ZFLX,ZRES)
-CALL GET_HALO(ZRES)
 !
 !* diagnose the dissipation
 !
 IF (LDIAG_IN_RUN) THEN
   XCURRENT_TKE_DISS = ZFLX(:,:,:) * PTKEM(:,:,:) &
                                   *(PEXPL*PTKEM(:,:,:) + PIMPL*ZRES(:,:,:))
-  CALL ADD3DFIELD_ll( TZFIELDDISS_ll, XCURRENT_TKE_DISS, 'TKE_EPS_SOURCES::XCURRENT_TKE_DISS' )
-  CALL UPDATE_HALO_ll(TZFIELDDISS_ll,IINFO_ll)
-  CALL CLEANLIST_ll(TZFIELDDISS_ll)
+!!!!!AROME!!  CALL ADD3DFIELD_ll(TZFIELDDISS_ll,XCURRENT_TKE_DISS)
+!!!!!AROME!!  CALL UPDATE_HALO_ll(TZFIELDDISS_ll,IINFO_ll)
+!!!!!AROME!!  CALL CLEANLIST_ll(TZFIELDDISS_ll)
 ENDIF
 !
 ! TKE must be greater than its minimum value
-! CL : Now done at the end of the time step in ADVECTION_METSV for MesoNH
-IF(CPROGRAM/='MESONH') THEN
- GTKENEG =  ZRES <= XTKEMIN 
- WHERE ( GTKENEG ) 
-   ZRES = XTKEMIN
- END WHERE
-END IF
+!
+GTKENEG =  ZRES <= XTKEMIN 
+WHERE ( GTKENEG ) 
+  ZRES = XTKEMIN
+END WHERE
+
 PTDISS(:,:,:) = - ZFLX(:,:,:)*(PEXPL*PTKEM(:,:,:) + PIMPL*ZRES(:,:,:))
 !
 IF ( LLES_CALL .OR.                         &
-     (OTURB_DIAG .AND. TPFILE%LOPENED)  ) THEN
+     (OTURB_DIAG .AND. OCLOSE_OUT)  ) THEN
 !
 ! Compute the cartesian vertical flux of TKE in ZFLX
 !
@@ -342,35 +331,37 @@ END IF
 !*       2.4  stores the explicit sources for budget purposes
 !
 IF (LBUDGET_TKE) THEN
-  ! Dynamical production
-  CALL BUDGET_STORE_ADD( TBUDGETS(NBUDGET_TKE), 'DP', PDP(:, :, :) * PRHODJ(:, :, :) )
-  ! Thermal production
-  CALL BUDGET_STORE_ADD( TBUDGETS(NBUDGET_TKE), 'TP', PTP(:, :, :) * PRHODJ(:, :, :) )
-  ! Dissipation
-  CALL BUDGET_STORE_ADD( TBUDGETS(NBUDGET_TKE), 'DISS',- XCED * SQRT(PTKEM(:,:,:)) / PLEPS(:,:,:) * &
-                (PEXPL*PTKEM(:,:,:) + PIMPL*ZRES(:,:,:)) * PRHODJ(:,:,:))
+!
+! add the dynamical production
+!
+  PRTKES(:,:,:) = PRTKES(:,:,:) + PDP(:,:,:) * PRHODJ(:,:,:)
+  CALL BUDGET_DDH (PRTKES(:,:,:),5,'DP_BU_RTKE',YDDDH, YDLDDH, YDMDDH)
+!
+! add the thermal production
+!
+  PRTKES(:,:,:) = PRTKES(:,:,:) + PTP(:,:,:) * PRHODJ(:,:,:)
+  CALL BUDGET_DDH (PRTKES(:,:,:),5,'TP_BU_RTKE',YDDDH, YDLDDH, YDMDDH)
+!
+! add the dissipation
+!
+PRTKES(:,:,:) = PRTKES(:,:,:) - XCED * SQRT(PTKEM(:,:,:)) / PLEPS(:,:,:) * &
+                (PEXPL*PTKEM(:,:,:) + PIMPL*ZRES(:,:,:)) * PRHODJ(:,:,:)
+CALL BUDGET_DDH (PRTKES(:,:,:),5,'DISS_BU_RTKE',YDDDH, YDLDDH, YDMDDH)
 END IF 
 !
 !*       2.5  computes the final RTKE and stores the whole turbulent transport
-!              with the removal of the advection part for MesoNH
-
-!Store the previous source terms in prtkes before initializing the next one
-!Should be in IF LBUDGET_TKE only. Was removed out for a correct comput. of PTDIFF in case of LBUDGET_TKE=F in AROME
-PRTKES(:,:,:) = PRTKES(:,:,:) + PRHODJ(:,:,:) *                                                           &
-                ( PDP(:,:,:) + PTP(:,:,:)                                                                 &
-                  - XCED * SQRT(PTKEM(:,:,:)) / PLEPS(:,:,:) * ( PEXPL*PTKEM(:,:,:) + PIMPL*ZRES(:,:,:) ) )
 !
 PTDIFF(:,:,:) =  ZRES(:,:,:) / PTSTEP - PRTKES(:,:,:)/PRHODJ(:,:,:) &
  & - PDP(:,:,:)- PTP(:,:,:) - PTDISS(:,:,:)
 
-IF (LBUDGET_TKE) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TKE), 'TR', PRTKES(:, :, :) )
-!
-PRTKES(:,:,:) = ZRES(:,:,:) * PRHODJ(:,:,:) / PTSTEP -  ZRTKESM(:,:,:)
+PRTKES(:,:,:) = ZRES(:,:,:) * PRHODJ(:,:,:) / PTSTEP
+
 !
 ! stores the whole turbulent transport
 !
-IF (LBUDGET_TKE) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TKE), 'TR', PRTKES(:, :, :) )
-
+IF (LBUDGET_TKE) CALL BUDGET_DDH (PRTKES(:,:,:),5,'TR_BU_RTKE',YDDDH, YDLDDH, YDMDDH)
+!
+!
 !----------------------------------------------------------------------------
 !
 !*       3.   COMPUTE THE DISSIPATIVE HEATING
@@ -378,81 +369,60 @@ IF (LBUDGET_TKE) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TKE), 'TR', PRTKES(:, :
 !
 PRTHLS(:,:,:) = PRTHLS(:,:,:) + XCED * SQRT(PTKEM(:,:,:)) / PLEPS(:,:,:) * &
                 (PEXPL*PTKEM(:,:,:) + PIMPL*ZRES(:,:,:)) * PRHODJ(:,:,:) * PCOEF_DISS(:,:,:)
+!
 !----------------------------------------------------------------------------
 !
 !*       4.   STORES SOME DIAGNOSTICS
 !             -----------------------
 !
-IF(PRESENT(PDISS)) PDISS(:,:,:) =  -XCED * (PTKEM(:,:,:)**1.5) / PLEPS(:,:,:)
-IF(PRESENT(PTR)) PTR=ZTR
-IF(PRESENT(PEDR)) PEDR = XCED * (PTKEM(:,:,:)**1.5) / PLEPS(:,:,:)
-!
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
+PEDR(:,:,:)=XCED * (PTKEM(:,:,:)**1.5) / PLEPS(:,:,:)
+
+
+
+IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
 !
 ! stores the dynamic production 
 !
-  TZFIELD%CMNHNAME   = 'DP'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'DP'
-  TZFIELD%CUNITS     = 'm2 s-3'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_DP'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,PDP)
+  YRECFM  ='DP'
+  YCOMMENT='X_Y_Z_DP (M**2/S**3)'
+  IGRID   = 1
+  ILENCH=LEN(YCOMMENT) 
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PDP,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the thermal production 
 !
-  TZFIELD%CMNHNAME   = 'TP'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'TP'
-  TZFIELD%CUNITS     = 'm2 s-3'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_TP'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,PTP)
+  YRECFM  ='TP'
+  YCOMMENT='X_Y_Z_TP (M**2/S**3)'
+  IGRID   = 1
+  ILENCH=LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTP,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the whole turbulent transport
 !
-  TZFIELD%CMNHNAME   = 'TR'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'TR'
-  TZFIELD%CUNITS     = 'm2 s-3'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_TR'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZTR)
+  YRECFM  ='TR'
+  YCOMMENT='X_Y_Z_TR (M**2/S**3)'
+  IGRID   = 1
+  ILENCH=LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZTR,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the dissipation of TKE 
 !
-  TZFIELD%CMNHNAME   = 'DISS'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'DISS'
-  TZFIELD%CUNITS     = 'm2 s-3'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_DISS'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,PDISS)
+  YRECFM  ='DISS'
+  YCOMMENT='X_Y_Z_DISS (M**2/S**3)'
+  IGRID   = 1
+  ILENCH=LEN(YCOMMENT)
+  ZFLX(:,:,:) =-XCED * (PTKEM(:,:,:)**1.5) / PLEPS(:,:,:) 
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLX,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! Storage in the LES configuration of the Dynamic Production of TKE and
 ! the dissipation of TKE 
 ! 
 IF (LLES_CALL ) THEN
-  CALL LES_MEAN_SUBGRID( PDISS, X_LES_SUBGRID_DISS_Tke )
+  ZFLX(:,:,:) =-XCED * (PTKEM(:,:,:)**1.5) / PLEPS(:,:,:) 
+  CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_DISS_Tke )
 END IF
-!
+! 
 !----------------------------------------------------------------------------
 ! 
 !
@@ -460,4 +430,3 @@ END IF
 !
 IF (LHOOK) CALL DR_HOOK('TKE_EPS_SOURCES',1,ZHOOK_HANDLE)
 END SUBROUTINE TKE_EPS_SOURCES
-END MODULE MODE_TKE_EPS_SOURCES
diff --git a/src/common/turb/turb.F90 b/src/arome/turb/turb.F90
similarity index 58%
rename from src/common/turb/turb.F90
rename to src/arome/turb/turb.F90
index f86eaf87a..68fec59f8 100644
--- a/src/common/turb/turb.F90
+++ b/src/arome/turb/turb.F90
@@ -1,28 +1,28 @@
-!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.
-!-----------------------------------------------------------------
+!     ######spl
       SUBROUTINE TURB(KKA,KKU,KKL,KMI,KRR,KRRL,KRRI,HLBCX,HLBCY,      &
               & KSPLIT,KMODEL_CL,                                     &
-              & OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
-              & HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,PIMPL,      &
-              & PTSTEP,TPFILE,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,           &
+              & OCLOSE_OUT,OTURB_FLX,OTURB_DIAG,OSUBG_COND,ORMC01,    &
+              & HTURBDIM,HTURBLEN,HTOM,HTURBLEN_CL,HINST_SFU,         &
+              & HMF_UPDRAFT,PIMPL,PTSTEP_UVW, PTSTEP_MET,PTSTEP_SV,   &
+              & HFMFILE,HLUOUT,PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,          &
               & PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,PCOSSLOPE,PSINSLOPE,    &
-              & PRHODJ,PTHVREF,                              &
+              & PRHODJ,PTHVREF,PRHODREF,                              &
               & PSFTH,PSFRV,PSFSV,PSFU,PSFV,                          &
-              & PPABST,PUT,PVT,PWT,PTKET,PSVT,PSRCT,                  &
+              & PPABSM,PUM,PVM,PWM,PTKEM,PSVM,PSRCM,                  &
               & PLENGTHM,PLENGTHH,MFMOIST,                            &
               & PBL_DEPTH,PSBL_DEPTH,                                 &
-              & PCEI,PCEI_MIN,PCEI_MAX,PCOEF_AMPL_SAT,    &
-              & PTHLT,PRT,                                            &
+              & PUT,PVT,PWT,PCEI,PCEI_MIN,PCEI_MAX,PCOEF_AMPL_SAT,    &
+              & PTHLM,PRM,                                            &
               & PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,PRTKES,              &
-              & PSIGS,                                        &
+              & PHGRAD, PSIGS,                                        &
               & PDRUS_TURB,PDRVS_TURB,                                &
               & PDRTHLS_TURB,PDRRTS_TURB,PDRSVS_TURB,                 &
-              & PFLXZTHVMF,PWTH,PWRC,PWSV,PDP,PTP,PTPMF,PTDIFF,PTDISS,&
-              & TBUDGETS, KBUDGETS,                                   &
-              & PTR,PDISS,PEDR,PLEM                            )
+              & PFLXZTHVMF,PWTH,PWRC,PWSV,PDP,PTP,PTPMF,PTDIFF,       &
+              & PTDISS,PEDR,YDDDH,YDLDDH,YDMDDH)
+
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+      USE MODD_CTURB, ONLY : LHARAT
 !     #################################################################
 !
 !
@@ -125,6 +125,7 @@
 !!      Module MODD_BUDGET:
 !!         NBUMOD  
 !!         CBUTYPE 
+!!         NBUPROCCTR 
 !!         LBU_RU     
 !!         LBU_RV     
 !!         LBU_RW     
@@ -209,71 +210,46 @@
 !!                     06/2011 (J.escobar ) Bypass Bug with ifort11/12 on  HLBCX,HLBC
 !!                     2012-02 Y. Seity,  add possibility to run with reversed
 !!                                          vertical levels
-!!                     10/2012 (J. Colin) Correct bug in DearDoff for dry simulations
-!!                     10/2012 J.Escobar Bypass PGI bug , redefine some allocatable array inplace of automatic
 !!                     2014-11 Y. Seity,  add output terms for TKE DDHs budgets
 !!                     July 2015 (Wim de Rooy)  modifications to run with RACMO
 !!                                              turbulence (LHARAT=TRUE)
-!!                     04/2016  (C.Lac) correction of negativity for KHKO
-!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
-!  Q. Rodier      01/2018: introduction of RM17
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!  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
-!  P. Wautelet 11/06/2020: bugfix: correct PRSVS array indices
-!  P. Wautelet + Benoit Vié 06/2020: improve removal of negative scalar variables + adapt the corresponding budgets
-!  P. Wautelet 30/06/2020: move removal of negative scalar variables to Sources_neg_correct
-!  R. Honnert/V. Masson 02/2021: new mixing length in the grey zone
-!  J.L. Redelsperger 03/2021: add Ocean LES case
-! --------------------------------------------------------------------------
-!
+!! --------------------------------------------------------------------------
+!       
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
-USE MODD_PARAMETERS, ONLY: JPVEXT_TURB
+USE MODD_PARAMETERS
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_CONF
-USE MODD_BUDGET, ONLY: LBUDGET_U,  LBUDGET_V,  LBUDGET_W,  LBUDGET_TH, LBUDGET_RV, LBUDGET_RC,  &
-                            LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV,  &
-                            NBUDGET_U,  NBUDGET_V,  NBUDGET_W,  NBUDGET_TH, NBUDGET_RV, NBUDGET_RC,  &
-                            NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, NBUDGET_SV1, &
-                            TBUDGETDATA
-USE MODD_DYN_n, ONLY : LOCEAN
-USE MODD_FIELD, ONLY: TFIELDDATA,TYPEREAL
-USE MODD_IO, ONLY: TFILEDATA
+USE MODD_BUDGET
 USE MODD_LES
-USE MODD_TURB_n, ONLY: XCADAP
 USE MODD_NSV
 !
-USE MODE_BL89, ONLY: BL89
-USE MODE_TURB_VER, ONLY : TURB_VER
-USE MODE_ROTATE_WIND, ONLY: ROTATE_WIND
-USE MODE_TURB_HOR_SPLT, ONLY: TURB_HOR_SPLT
-USE MODE_TKE_EPS_SOURCES, ONLY: TKE_EPS_SOURCES
+USE MODI_BL89
+USE MODI_TURB_VER
+!!MODIF AROME
+!USE MODI_ROTATE_WIND
+!USE MODI_TURB_HOR_SPLT 
+USE MODI_TKE_EPS_SOURCES
 USE MODI_SHUMAN, ONLY : MZF, MXF, MYF
 USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
+USE MODI_BUDGET_DDH
 USE MODI_LES_MEAN_SUBGRID
-USE MODE_RMC01, ONLY: RMC01
+USE MODI_RMC01
 USE MODI_GRADIENT_W
-USE MODE_TM06, ONLY: TM06
-USE MODE_UPDATE_LM, ONLY: UPDATE_LM
+USE MODI_TM06
+USE MODI_UPDATE_LM
 !
-USE MODE_BUDGET,         ONLY: BUDGET_STORE_INIT, BUDGET_STORE_END
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
 USE MODE_SBL
-USE MODE_SOURCES_NEG_CORRECT, ONLY: SOURCES_NEG_CORRECT
+USE MODE_FMWRIT
 !
-USE MODE_EMOIST, ONLY: EMOIST
-USE MODE_ETHETA, ONLY: ETHETA
+USE MODI_EMOIST
+USE MODI_ETHETA
 !
-USE MODD_IBM_PARAM_n,    ONLY: LIBM, XIBM_LS, XIBM_XMUT
-USE MODI_IBM_MIXINGLENGTH
+USE DDH_MIX, ONLY  : TYP_DDH
+USE YOMLDDH, ONLY  : TLDDH
+USE YOMMDDH, ONLY  : TMDDH
 !
 IMPLICIT NONE
 !
@@ -292,6 +268,8 @@ INTEGER,                INTENT(IN)   :: KRRI          ! number of ice water var.
 CHARACTER(LEN=*),DIMENSION(:),INTENT(IN):: HLBCX, HLBCY  ! X- and Y-direc LBC
 INTEGER,                INTENT(IN)   :: KSPLIT        ! number of time-splitting
 INTEGER,                INTENT(IN)   :: KMODEL_CL     ! model number for cloud mixing length
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening
 LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
@@ -299,15 +277,24 @@ LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
 LOGICAL,                INTENT(IN)   ::  OSUBG_COND   ! switch for SUBGrid 
                                  ! CONDensation
 LOGICAL,                INTENT(IN)   ::  ORMC01       ! switch for RMC01 lengths in SBL
-CHARACTER(LEN=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
-                                                      ! turbulence scheme
+CHARACTER(LEN=4),       INTENT(IN)      ::  HTURBDIM  ! dimensionality of the 
+                                 ! turbulence scheme
 CHARACTER(LEN=4),       INTENT(IN)   ::  HTURBLEN     ! kind of mixing length
 CHARACTER(LEN=4),       INTENT(IN)   ::  HTOM         ! kind of Third Order Moment
 CHARACTER(LEN=4),       INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing length
+CHARACTER(LEN=1),       INTENT(IN)   ::  HINST_SFU    ! temporal location of the
+                                                      ! surface friction flux
 REAL,                   INTENT(IN)   ::  PIMPL        ! degree of implicitness
-!CHARACTER (LEN=4),      INTENT(IN)   ::  HCLOUD       ! Kind of microphysical scheme
-REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
-TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
+REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
+REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
+REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
+!
+CHARACTER(LEN=4),       INTENT(IN)   ::  HMF_UPDRAFT  ! Type of Mass Flux Scheme
+
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   :: PDXX,PDYY,PDZZ,PDZX,PDZY
                                         ! metric coefficients
@@ -324,24 +311,27 @@ REAL, DIMENSION(:,:,:), INTENT(IN)      ::  MFMOIST ! moist mass flux dual schem
 
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PTHVREF   ! Virtual Potential
                                         ! Temperature of the reference state
+REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PRHODREF  ! dry density of the 
+                                        ! reference state
 !
 REAL, DIMENSION(:,:),   INTENT(IN)      ::  PSFTH,PSFRV,   &
 ! normal surface fluxes of theta and Rv 
                                             PSFU,PSFV
-! normal surface fluxes of (u,v) parallel to the orography
+! normal surface fluxes of (u,v) parallel to the orography 
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PSFSV
 ! normal surface fluxes of Scalar var. 
 !
 !    prognostic variables at t- deltat
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PPABST      ! Pressure at time t
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PUT,PVT,PWT ! wind components
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PTKET       ! TKE
-REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVT        ! passive scal. var.
-REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PSRCT       ! Second-order flux
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PPABSM      ! Pressure at time t-1
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PUM,PVM,PWM ! wind components
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PTKEM       ! TKE
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM        ! passive scal. var.
+REAL, DIMENSION(:,:,:),   INTENT(IN) ::  PSRCM       ! Second-order flux
                       ! s'rc'/2Sigma_s2 at time t-1 multiplied by Lambda_3
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PBL_DEPTH  ! BL height for TOMS
 REAL, DIMENSION(:,:),     INTENT(INOUT) :: PSBL_DEPTH ! SBL depth for RMC01
 !
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PUT,PVT,PWT ! Wind  at t
 !    variables for cloud mixing length
 REAL, DIMENSION(:,:,:), INTENT(IN)      ::  PCEI ! Cloud Entrainment instability
                                                  ! index to emphasize localy 
@@ -351,9 +341,9 @@ REAL, INTENT(IN)      ::  PCEI_MAX ! maximum threshold for the instability index
 REAL, INTENT(IN)      ::  PCOEF_AMPL_SAT ! saturation of the amplification coefficient
 !
 !   thermodynamical variables which are transformed in conservative var.
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PTHLT       ! conservative pot. temp.
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRT         ! water var.  where 
-                             ! PRT(:,:,:,1) is the conservative mixing ratio        
+REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PTHLM       ! conservative pot. temp.
+REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRM         ! water var.  where 
+                             ! PRM(:,:,:,1) is the conservative mixing ratio        
 !
 ! sources of momentum, conservative potential temperature, Turb. Kin. Energy, 
 ! TKE dissipation
@@ -364,7 +354,8 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRRS
 ! Source terms for all passive scalar variables
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS
 ! Sigma_s at time t+1 : square root of the variance of the deviation to the 
-! saturation
+! saturation 
+REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PHGRAD
 REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PSIGS
 REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PDRUS_TURB   ! evolution of rhoJ*U   by turbulence only
 REAL, DIMENSION(:,:,:), INTENT(OUT)     ::  PDRVS_TURB   ! evolution of rhoJ*V   by turbulence only
@@ -384,29 +375,29 @@ REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PTPMF      ! Thermal TKE production
 REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PDP        ! Dynamic TKE production
 REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PTDIFF     ! Diffusion TKE term
 REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PTDISS     ! Dissipation TKE term
-!
-TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS
-INTEGER, INTENT(IN) :: KBUDGETS
+
+
+REAL, DIMENSION(:,:,:),   INTENT(OUT) ::  PEDR       ! EDR
+
+TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH
+TYPE(TLDDH),   INTENT(IN)    :: YDLDDH
+TYPE(TMDDH),   INTENT(IN)    :: YDMDDH
 !
 ! length scale from vdfexcu
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PLENGTHM, PLENGTHH
-!
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  :: PTR   ! Transport production of TKE
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  :: PDISS ! Dissipation of TKE
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  :: PEDR  ! EDR
-REAL, DIMENSION(:,:,:), INTENT(OUT), OPTIONAL  :: PLEM  ! Mixing length
+
 !
 !
 !-------------------------------------------------------------------------------
 !
 !       0.2  declaration of local variables
 !
-REAL, DIMENSION(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)) ::     &
+REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) ::     &
           ZCP,                        &  ! Cp at t-1
           ZEXN,                       &  ! EXN at t-1
           ZT,                         &  ! T at t-1
           ZLOCPEXNM,                  &  ! Lv/Cp/EXNREF at t-1
-          ZLM,ZLMW,                   &  ! Turbulent mixing length (+ work array)
+          ZLM,                        &  ! Turbulent mixing length
           ZLEPS,                      &  ! Dissipative length
           ZTRH,                       &  ! 
           ZATHETA,ZAMOIST,            &  ! coefficients for s = f (Thetal,Rnp)
@@ -415,9 +406,9 @@ REAL, DIMENSION(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)) ::     &
           ZMWTH,ZMWR,ZMTH2,ZMR2,ZMTHR,&  ! 3rd order moments
           ZFWTH,ZFWR,ZFTH2,ZFR2,ZFTHR,&  ! opposite of verticale derivate of 3rd order moments
           ZTHLM                          ! initial potential temp.
-REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),SIZE(PRT,4)) ::     &
+REAL, DIMENSION(SIZE(PRM,1),SIZE(PRM,2),SIZE(PRM,3),SIZE(PRM,4)) ::     &
           ZRM                            ! initial mixing ratio 
-REAL, DIMENSION(SIZE(PTHLT,1),SIZE(PTHLT,2)) ::  ZTAU11M,ZTAU12M,  &
+REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2)) ::  ZTAU11M,ZTAU12M,  &
                                                  ZTAU22M,ZTAU33M,  &
             ! tangential surface fluxes in the axes following the orography
                                                  ZUSLOPE,ZVSLOPE,  &
@@ -445,14 +436,17 @@ INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain 
 INTEGER             :: JRR,JK,JSV   ! loop counters
 INTEGER             :: JI,JJ        ! loop counters
+INTEGER             :: IRESP        ! Return code of FM routines
+INTEGER             :: IGRID        ! C-grid indicator in LFIFM file
+INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL                :: ZL0          ! Max. Mixing Length in Blakadar formula
-REAL                :: ZALPHA       ! work coefficient : 
-                                    ! - proportionnality constant between Dz/2 and 
-!                                   !   BL89 mixing length near the surface
+REAL                :: ZALPHA       ! proportionnality constant between Dz/2 and 
+!                                   ! BL89 mixing length near the surface
 !
 REAL :: ZTIME1, ZTIME2
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3))::  ZSHEAR, ZDUDZ, ZDVDZ
-TYPE(TFIELDDATA) :: TZFIELD
 !
 !*      1.PRELIMINARIES
 !         -------------
@@ -462,7 +456,6 @@ TYPE(TFIELDDATA) :: TZFIELD
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB',0,ZHOOK_HANDLE)
-!
 IF (LHARAT .AND. HTURBDIM /= '1DIM') THEN
   CALL ABOR1('LHARATU only implemented for option HTURBDIM=1DIM!')
 ENDIF
@@ -470,7 +463,8 @@ IF (LHARAT .AND. LLES_CALL) THEN
   CALL ABOR1('LHARATU not implemented for option LLES_CALL')
 ENDIF
 
-IKT=SIZE(PTHLT,3)          
+
+IKT=SIZE(PTHLM,3)          
 IKTB=1+JPVEXT_TURB              
 IKTE=IKT-JPVEXT_TURB
 IKB=KKA+JPVEXT_TURB*KKL
@@ -480,11 +474,8 @@ ZEXPL = 1.- PIMPL
 ZRVORD= XRV / XRD
 !
 !
-!Copy data into ZTHLM and ZRM only if needed
-IF (HTURBLEN=='BL89' .OR. HTURBLEN=='RM17' .OR. ORMC01) THEN
-  ZTHLM(:,:,:) = PTHLT(:,:,:)
-  ZRM(:,:,:,:) = PRT(:,:,:,:)
-END IF
+ZTHLM(:,:,:) = PTHLM(:,:,:)
+ZRM(:,:,:,:) = PRM(:,:,:,:)
 !
 !
 !
@@ -495,24 +486,20 @@ END IF
 !
 !*      2.1 Cph at t
 !
-ZCP(:,:,:)=XCPD
+ZCP=XCPD
 !
-IF (KRR > 0) ZCP(:,:,:) = ZCP(:,:,:) + XCPV * PRT(:,:,:,1)
+IF (KRR > 0) ZCP(:,:,:) = ZCP(:,:,:) + XCPV * PRM(:,:,:,1)
 DO JRR = 2,1+KRRL                          ! loop on the liquid components  
-  ZCP(:,:,:)  = ZCP(:,:,:) + XCL * PRT(:,:,:,JRR)
+  ZCP(:,:,:)  = ZCP(:,:,:) + XCL * PRM(:,:,:,JRR)
 END DO
 !
 DO JRR = 2+KRRL,1+KRRL+KRRI                ! loop on the solid components   
-  ZCP(:,:,:)  = ZCP(:,:,:)  + XCI * PRT(:,:,:,JRR)
+  ZCP(:,:,:)  = ZCP(:,:,:)  + XCI * PRM(:,:,:,JRR)
 END DO
 !
 !*      2.2 Exner function at t
 !
-IF (LOCEAN) THEN
-  ZEXN(:,:,:) = 1.
-ELSE
-  ZEXN(:,:,:) = (PPABST(:,:,:)/XP00) ** (XRD/XCPD)
-END IF
+ZEXN(:,:,:) = (PPABSM(:,:,:)/XP00) ** (XRD/XCPD)
 !
 !*      2.3 dissipative heating coeff a t
 !
@@ -527,23 +514,23 @@ IF (KRRL >=1) THEN
 !
 !*      2.4 Temperature at t
 !
-  ZT(:,:,:) =  PTHLT(:,:,:) * ZEXN(:,:,:)
+  ZT(:,:,:) =  PTHLM(:,:,:) * ZEXN(:,:,:)
 !
 !*       2.5 Lv/Cph/Exn
 !
   IF ( KRRI >= 1 ) THEN 
-    ALLOCATE(ZLVOCPEXNM(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)))
-    ALLOCATE(ZLSOCPEXNM(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)))
-    ALLOCATE(ZAMOIST_ICE(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)))
-    ALLOCATE(ZATHETA_ICE(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)))
+    ALLOCATE(ZLVOCPEXNM(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
+    ALLOCATE(ZLSOCPEXNM(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
+    ALLOCATE(ZAMOIST_ICE(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
+    ALLOCATE(ZATHETA_ICE(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
 !
     CALL COMPUTE_FUNCTION_THERMO(XALPW,XBETAW,XGAMW,XLVTT,XCL,ZT,ZEXN,ZCP, &
                                  ZLVOCPEXNM,ZAMOIST,ZATHETA)
     CALL COMPUTE_FUNCTION_THERMO(XALPI,XBETAI,XGAMI,XLSTT,XCI,ZT,ZEXN,ZCP, &
                                  ZLSOCPEXNM,ZAMOIST_ICE,ZATHETA_ICE)
 !
-    WHERE(PRT(:,:,:,2)+PRT(:,:,:,4)>0.0)
-      ZFRAC_ICE(:,:,:) = PRT(:,:,:,4) / ( PRT(:,:,:,2)+PRT(:,:,:,4) )
+    WHERE(PRM(:,:,:,2)+PRM(:,:,:,4)>0.0)
+      ZFRAC_ICE(:,:,:) = PRM(:,:,:,4) / ( PRM(:,:,:,2)+PRM(:,:,:,4) )
     END WHERE
 !
     ZLOCPEXNM(:,:,:) = (1.0-ZFRAC_ICE(:,:,:))*ZLVOCPEXNM(:,:,:) &
@@ -561,30 +548,18 @@ IF (KRRL >=1) THEN
   END IF
 !
 !
-  IF ( TPFILE%LOPENED .AND. OTURB_DIAG ) THEN
-    TZFIELD%CMNHNAME   = 'ATHETA'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'ATHETA'
-    TZFIELD%CUNITS     = 'm'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_ATHETA'
-    TZFIELD%NGRID      = 1
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZATHETA)
+  IF (OCLOSE_OUT .AND. OTURB_DIAG) THEN
+    YRECFM  ='ATHETA'
+    YCOMMENT='X_Y_Z_ATHETA (M)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZATHETA,IGRID,ILENCH,YCOMMENT,IRESP)
 ! 
-    TZFIELD%CMNHNAME   = 'AMOIST'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'AMOIST'
-    TZFIELD%CUNITS     = 'm'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_AMOIST'
-    TZFIELD%NGRID      = 1
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZAMOIST)
+    YRECFM  ='AMOIST'
+    YCOMMENT='X_Y_Z_AMOIST (M)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZAMOIST,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 !
 ELSE
@@ -594,21 +569,21 @@ END IF              ! loop end on KRRL >= 1
 ! computes conservative variables
 !
 IF ( KRRL >= 1 ) THEN
-  IF ( KRRI >= 1 ) THEN
-    ! Rnp at t
-    PRT(:,:,:,1)  = PRT(:,:,:,1)  + PRT(:,:,:,2)  + PRT(:,:,:,4)
+  IF ( KRRI >= 1 ) THEN 
+    ! Rnp at t-1
+    PRM(:,:,:,1)  = PRM(:,:,:,1)  + PRM(:,:,:,2)  + PRM(:,:,:,4)
     PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2) + PRRS(:,:,:,4)
-    ! Theta_l at t
-    PTHLT(:,:,:)  = PTHLT(:,:,:)  - ZLVOCPEXNM(:,:,:) * PRT(:,:,:,2) &
-                                  - ZLSOCPEXNM(:,:,:) * PRT(:,:,:,4)
+    ! Theta_l at t-1
+    PTHLM(:,:,:)  = PTHLM(:,:,:)  - ZLVOCPEXNM(:,:,:) * PRM(:,:,:,2) &
+                                  - ZLSOCPEXNM(:,:,:) * PRM(:,:,:,4)
     PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZLVOCPEXNM(:,:,:) * PRRS(:,:,:,2) &
                                   - ZLSOCPEXNM(:,:,:) * PRRS(:,:,:,4)
   ELSE
-    ! Rnp at t
-    PRT(:,:,:,1)  = PRT(:,:,:,1)  + PRT(:,:,:,2) 
+    ! Rnp at t-1
+    PRM(:,:,:,1)  = PRM(:,:,:,1)  + PRM(:,:,:,2) 
     PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2)
-    ! Theta_l at t
-    PTHLT(:,:,:)  = PTHLT(:,:,:)  - ZLOCPEXNM(:,:,:) * PRT(:,:,:,2)
+    ! Theta_l at t-1
+    PTHLM(:,:,:)  = PTHLM(:,:,:)  - ZLOCPEXNM(:,:,:) * PRM(:,:,:,2)
     PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZLOCPEXNM(:,:,:) * PRRS(:,:,:,2)
   END IF
 END IF
@@ -634,47 +609,21 @@ SELECT CASE (HTURBLEN)
 
   CASE ('BL89')
     ZSHEAR=0.
-    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM)
+    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKEM,ZSHEAR,ZLM)
 !
-!*      3.2 RM17 mixing length
-!           ------------------
-
-  CASE ('RM17')
-    ZDUDZ = MXF(MZF(GZ_U_UW(PUT,PDZZ,KKA,KKU,KKL),KKA,KKU,KKL))
-    ZDVDZ = MYF(MZF(GZ_V_VW(PVT,PDZZ,KKA,KKU,KKL),KKA,KKU,KKL))
-    ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ)
-    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM)
-!
-!*      3.3 Grey-zone combined RM17 & Deardorff mixing lengths 
-!           --------------------------------------------------
-
-  CASE ('ADAP')
-    ZDUDZ = MXF(MZF(GZ_U_UW(PUT,PDZZ,KKA,KKU,KKL),KKA,KKU,KKL))
-    ZDVDZ = MYF(MZF(GZ_V_VW(PVT,PDZZ,KKA,KKU,KKL),KKA,KKU,KKL))
-    ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ)
-    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM)
-
-    CALL DELT(ZLMW,ODZ=.FALSE.)
-    ! The minimum mixing length is chosen between Horizontal grid mesh (not taking into account the vertical grid mesh) and RM17.
-    ! For large horizontal grid meshes, this is equal to RM17
-    ! For LES grid meshes, this is equivalent to Deardorff : the base mixing lentgh is the horizontal grid mesh, 
-    !                      and it is limited by a stability-based length (RM17), as was done in Deardorff length (but taking into account shear as well)
-    ! For grid meshes in the grey zone, then this is the smaller of the two.
-    ZLM = MIN(ZLM,XCADAP*ZLMW)
-!
-!*      3.4 Delta mixing length
+!*      3.2 Delta mixing length
 !           -------------------
 !
   CASE ('DELT')
-    CALL DELT(PLEM,ODZ=.TRUE.)
+    CALL DELT(ZLM)
 !
-!*      3.5 Deardorff mixing length
+!*      3.3 Deardorff mixing length
 !           -----------------------
 !
   CASE ('DEAR')
     CALL DEAR(ZLM)
 !
-!*      3.6 Blackadar mixing length
+!*      3.4 Blackadar mixing length
 !           -----------------------
 !
   CASE ('BLKR')
@@ -698,51 +647,45 @@ END SELECT
 !
 !*      3.5 Mixing length modification for cloud
 !           -----------------------
-IF (KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE') CALL CLOUD_MODIF_LM
-ENDIF  ! end LHARRAT
+IF (KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE' ) CALL CLOUD_MODIF_LM
+ENDIF  ! 
+
+!
+!
 
 !
 !*      3.6 Dissipative length
 !           ------------------
 
 IF (LHARAT) THEN
-  ZLEPS=PLENGTHM*(3.75**2.)
+ZLEPS=PLENGTHM*(3.75**2.)
 ELSE
-  ZLEPS=ZLM
+ZLEPS=ZLM
 ENDIF
 !
 !*      3.7 Correction in the Surface Boundary Layer (Redelsperger 2001)
 !           ----------------------------------------
 !
 ZLMO=XUNDEF
-IF (ORMC01) THEN
-  ZUSTAR=(PSFU**2+PSFV**2)**(0.25)
-  IF (KRR>0) THEN
-    ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRM(:,:,IKB,1),PSFTH,PSFRV)
-  ELSE
-    ZRVM=0.
-    ZSFRV=0.
-    ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRVM,PSFTH,ZSFRV)
-  END IF
+ IF (ORMC01) THEN
+   ZUSTAR=(PSFU**2+PSFV**2)**(0.25)
+    IF (KRR>0) THEN
+     ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRM(:,:,IKB,1),PSFTH,PSFRV)
+    ELSE
+     ZRVM=0.
+     ZSFRV=0.
+     ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRVM,PSFTH,ZSFRV)
+    END IF
   CALL RMC01(HTURBLEN,KKA,KKU,KKL,PZZ,PDXX,PDYY,PDZZ,PDIRCOSZW,PSBL_DEPTH,ZLMO,ZLM,ZLEPS)
-END IF
-!
-!RMC01 is only applied on RM17 in ADAP
-IF (HTURBLEN=='ADAP') ZLEPS = MIN(ZLEPS,ZLMW*XCADAP)
+ END IF
 !
 !*      3.8 Mixing length in external points (used if HTURBDIM="3DIM")
 !           ----------------------------------------------------------
 !
 IF (HTURBDIM=="3DIM") THEN
-  CALL UPDATE_LM(HLBCX,HLBCY,ZLM,ZLEPS)
+!****FOR AROME****
+!  CALL UPDATE_LM(HLBCX,HLBCY,ZLM,ZLEPS)
 END IF
-!
-!*      3.9 Mixing length correction if immersed walls 
-!           ------------------------------------------
-!
-IF (LIBM) THEN
-   CALL IBM_MIXINGLENGTH(PLEM,ZLEPS,XIBM_XMUT,XIBM_LS(:,:,:,1),PTKET)
-ENDIF
 !----------------------------------------------------------------------------
 !
 !*      4. GO INTO THE AXES FOLLOWING THE SURFACE
@@ -751,37 +694,72 @@ ENDIF
 !
 !*      4.1 rotate the wind at time t
 !
+IF ( HINST_SFU == 'T' ) THEN
 !
 !
-IF (CPROGRAM/='AROME ') THEN
-  CALL ROTATE_WIND(PUT,PVT,PWT,                       &
-                     PDIRCOSXW, PDIRCOSYW, PDIRCOSZW,   &
-                     PCOSSLOPE,PSINSLOPE,               &
-                     PDXX,PDYY,PDZZ,                    &
-                     ZUSLOPE,ZVSLOPE                    )
+  IF (CPROGRAM=='AROME ') THEN
+    ZUSLOPE=PUM(:,:,KKA)
+    ZVSLOPE=PVM(:,:,KKA)
+  ELSE
+!    CALL ROTATE_WIND(PUT,PVT,PWT,                       &
+!                     PDIRCOSXW, PDIRCOSYW, PDIRCOSZW,   &
+!                     PCOSSLOPE,PSINSLOPE,               &
+!                     PDXX,PDYY,PDZZ,                    &
+!                     ZUSLOPE,ZVSLOPE                    )
 !
-  CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE)
-ELSE
-  ZUSLOPE=PUT(:,:,KKA)
-  ZVSLOPE=PVT(:,:,KKA)
-END IF
+!    CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE)
+  END IF
 !
 !
 !*      4.2 compute the proportionality coefficient between wind and stress
 !
-ZCDUEFF(:,:) =-SQRT ( (PSFU(:,:)**2 + PSFV(:,:)**2) /               &
-#ifdef REPRO48
-                    (1.E-60 + ZUSLOPE(:,:)**2 + ZVSLOPE(:,:)**2 ) )
-#else
-                    (XMNH_TINY + ZUSLOPE(:,:)**2 + ZVSLOPE(:,:)**2 ) )
-#endif                      
+  ZCDUEFF(:,:) =-SQRT ( (PSFU(:,:)**2 + PSFV(:,:)**2) /               &
+                        (1.E-60 + ZUSLOPE(:,:)**2 + ZVSLOPE(:,:)**2 )   &
+                      )
+!
+!*      4.3 rotate the wind at time t-delta t
+!
+  IF (CPROGRAM/='AROME ') THEN
+!    CALL ROTATE_WIND(PUM,PVM,PWM,                       &
+!                     PDIRCOSXW, PDIRCOSYW, PDIRCOSZW,   &
+!                     PCOSSLOPE,PSINSLOPE,               &
+!                     PDXX,PDYY,PDZZ,                    &
+!                     ZUSLOPE,ZVSLOPE                    )
+!
+!    CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE)
+  END IF
+!
+ELSE
+!
+!*      4.4 rotate the wind at time t-delta t
+!
+  IF (CPROGRAM=='AROME ') THEN
+    ZUSLOPE=PUM(:,:,KKA)
+    ZVSLOPE=PVM(:,:,KKA)
+  ELSE
+!
+!    CALL ROTATE_WIND(PUM,PVM,PWM,                       &
+!                     PDIRCOSXW, PDIRCOSYW, PDIRCOSZW,   &
+!                     PCOSSLOPE,PSINSLOPE,               &
+!                     PDXX,PDYY,PDZZ,                    &
+!                     ZUSLOPE,ZVSLOPE                    )
+!
+!    CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE)
+  END IF
+!
+!*      4.5 compute the proportionality coefficient between wind and stress
+!
+  ZCDUEFF(:,:) =-SQRT ( (PSFU(:,:)**2 + PSFV(:,:)**2) /               &
+                        (1.E-60 + ZUSLOPE(:,:)**2 + ZVSLOPE(:,:)**2 )   &
+                      )
+END IF
 !
 !*       4.6 compute the surface tangential fluxes
 !
 ZTAU11M(:,:) =2./3.*(  (1.+ (PZZ (:,:,IKB+KKL)-PZZ (:,:,IKB))  &
                            /(PDZZ(:,:,IKB+KKL)+PDZZ(:,:,IKB))  &
-                       )   *PTKET(:,:,IKB)                   &
-                     -0.5  *PTKET(:,:,IKB+KKL)                 &
+                       )   *PTKEM(:,:,IKB)                   &
+                     -0.5  *PTKEM(:,:,IKB+KKL)                 &
                     )
 ZTAU12M(:,:) =0.0
 ZTAU22M(:,:) =ZTAU11M(:,:)
@@ -797,221 +775,130 @@ ZMTH2 = 0.     ! w'th'2
 ZMR2  = 0.     ! w'r'2
 ZMTHR = 0.     ! w'th'r'
 
-IF (HTOM=='TM06') THEN
-  CALL TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,ZMWTH,ZMTH2)
-!
-  ZFWTH = -GZ_M_W(KKA,KKU,KKL,ZMWTH,PDZZ)    ! -d(w'2th' )/dz
-  !ZFWR  = -GZ_M_W(KKA,KKU,KKL,ZMWR, PDZZ)    ! -d(w'2r'  )/dz
-  ZFTH2 = -GZ_W_M(ZMTH2,PDZZ)    ! -d(w'th'2 )/dz
-  !ZFR2  = -GZ_W_M(ZMR2, PDZZ)    ! -d(w'r'2  )/dz
-  !ZFTHR = -GZ_W_M(ZMTHR,PDZZ)    ! -d(w'th'r')/dz
-!
-  ZFWTH(:,:,IKTE:) = 0.
-  ZFWTH(:,:,:IKTB) = 0.
-  !ZFWR (:,:,IKTE:) = 0.
-  !ZFWR (:,:,:IKTB) = 0.
-  ZFWR  = 0.
-  ZFTH2(:,:,IKTE:) = 0.
-  ZFTH2(:,:,:IKTB) = 0.
-  !ZFR2 (:,:,IKTE:) = 0.
-  !ZFR2 (:,:,:IKTB) = 0.
-  ZFR2  = 0.
-  !ZFTHR(:,:,IKTE:) = 0.
-  !ZFTHR(:,:,:IKTB) = 0.
-  ZFTHR = 0.
-ELSE
-  ZFWTH = 0.
-  ZFWR  = 0.
-  ZFTH2 = 0.
-  ZFR2  = 0.
-  ZFTHR = 0.
-ENDIF
+IF (HTOM=='TM06') CALL TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,ZMWTH,ZMTH2)
+!
+ZFWTH = -GZ_M_W(ZMWTH,PDZZ, KKA, KKU, KKL)    ! -d(w'2th' )/dz
+ZFWR  = -GZ_M_W(ZMWR, PDZZ, KKA, KKU, KKL)    ! -d(w'2r'  )/dz
+ZFTH2 = -GZ_W_M(ZMTH2,PDZZ, KKA, KKU, KKL)    ! -d(w'th'2 )/dz
+ZFR2  = -GZ_W_M(ZMR2, PDZZ, KKA, KKU, KKL)    ! -d(w'r'2  )/dz
+ZFTHR = -GZ_W_M(ZMTHR,PDZZ, KKA, KKU, KKL)    ! -d(w'th'r')/dz
+!
+ZFWTH(:,:,IKTE:) = 0.
+ZFWTH(:,:,:IKTB) = 0.
+ZFWR (:,:,IKTE:) = 0.
+ZFWR (:,:,:IKTB) = 0.
+ZFTH2(:,:,IKTE:) = 0.
+ZFTH2(:,:,:IKTB) = 0.
+ZFR2 (:,:,IKTE:) = 0.
+ZFR2 (:,:,:IKTB) = 0.
+ZFTHR(:,:,IKTE:) = 0.
+ZFTHR(:,:,:IKTB) = 0.
 !
 !----------------------------------------------------------------------------
 !
 !*      5. TURBULENT SOURCES
 !          -----------------
 !
-IF( LBUDGET_U )  CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_U ), 'VTURB', PRUS(:, :, :)    )
-IF( LBUDGET_V )  CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_V ), 'VTURB', PRVS(:, :, :)    )
-IF( LBUDGET_W )  CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_W ), 'VTURB', PRWS(:, :, :)    )
-
-IF( LBUDGET_TH ) THEN
-  IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) + ZLVOCPEXNM(:, :, :) * PRRS(:, :, :, 2) &
-                                                                          + ZLSOCPEXNM(:, :, :) * PRRS(:, :, :, 4) )
-  ELSE IF( KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) + ZLOCPEXNM(:, :, :) * PRRS(:, :, :, 2) )
-  ELSE
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) )
-  END IF
-END IF
-
-IF( LBUDGET_RV ) THEN
-  IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) - PRRS(:, :, :, 4) )
-  ELSE IF( KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) )
-  ELSE
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) )
-  END IF
-END IF
-
-IF( LBUDGET_RC ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RC), 'VTURB', PRRS  (:, :, :, 2) )
-IF( LBUDGET_RI ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RI), 'VTURB', PRRS  (:, :, :, 4) )
-
-IF( LBUDGET_SV ) THEN
-  DO JSV = 1, NSV
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'VTURB', PRSVS(:, :, :, JSV) )
-  END DO
-END IF
-
 CALL TURB_VER(KKA,KKU,KKL,KRR, KRRL, KRRI,               &
-          OTURB_FLX,                                     &
+          OCLOSE_OUT,OTURB_FLX,                          &
           HTURBDIM,HTOM,PIMPL,ZEXPL,                     &
-          PTSTEP,TPFILE,                                 &
+          PTSTEP_UVW, PTSTEP_MET, PTSTEP_SV,             &
+          HFMFILE,HLUOUT,                                &
           PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,        &
           PCOSSLOPE,PSINSLOPE,                           &
           PRHODJ,PTHVREF,                                &
           PSFTH,PSFRV,PSFSV,PSFTH,PSFRV,PSFSV,           &
           ZCDUEFF,ZTAU11M,ZTAU12M,ZTAU33M,               &
-          PUT,PVT,PWT,ZUSLOPE,ZVSLOPE,PTHLT,PRT,PSVT,    &
-          PTKET,ZLM,PLENGTHM,PLENGTHH,ZLEPS,MFMOIST,     &
-          ZLOCPEXNM,ZATHETA,ZAMOIST,PSRCT,ZFRAC_ICE,     &
+          PUM,PVM,PWM,ZUSLOPE,ZVSLOPE,PTHLM,PRM,PSVM,    &
+          PTKEM,ZLM,PLENGTHM,PLENGTHH,ZLEPS,MFMOIST,     &
+          ZLOCPEXNM,ZATHETA,ZAMOIST,PSRCM,ZFRAC_ICE,     &
           ZFWTH,ZFWR,ZFTH2,ZFR2,ZFTHR,PBL_DEPTH,         &
           PSBL_DEPTH,ZLMO,                               &
           PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,              &
           PDP,PTP,PSIGS,PWTH,PWRC,PWSV                   )
+!
 
-IF( LBUDGET_U ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_U), 'VTURB', PRUS(:, :, :) )
-IF( LBUDGET_V ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_V), 'VTURB', PRVS(:, :, :) )
-IF( LBUDGET_W ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_W), 'VTURB', PRWS(:, :, :) )
-
-IF( LBUDGET_TH ) THEN
-  IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) + ZLVOCPEXNM(:, :, :) * PRRS(:, :, :, 2) &
-                                                                          + ZLSOCPEXNM(:, :, :) * PRRS(:, :, :, 4) )
-  ELSE IF( KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) + ZLOCPEXNM(:, :, :) * PRRS(:, :, :, 2) )
+IF (LBUDGET_U) CALL BUDGET_DDH (PRUS,1,'VTURB_BU_RU',YDDDH, YDLDDH, YDMDDH)
+IF (LBUDGET_V) CALL BUDGET_DDH (PRVS,2,'VTURB_BU_RV',YDDDH, YDLDDH, YDMDDH)
+IF (LBUDGET_W) CALL BUDGET_DDH (PRWS,3,'VTURB_BU_RW',YDDDH, YDLDDH, YDMDDH)
+IF (LBUDGET_TH)  THEN
+  IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
+    CALL BUDGET_DDH (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'VTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH)
+  ELSE IF ( KRRL >= 1 ) THEN
+    CALL BUDGET_DDH (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'VTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH)
   ELSE
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'VTURB', PRTHLS(:, :, :) )
+    CALL BUDGET_DDH (PRTHLS,4,'VTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH)
   END IF
 END IF
-
-IF( LBUDGET_RV ) THEN
-  IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) - PRRS(:, :, :, 4) )
-  ELSE IF( KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) )
+IF (LBUDGET_SV) THEN
+  DO JSV = 1,NSV
+    CALL BUDGET_DDH (PRSVS(:,:,:,JSV),JSV+12,'VTURB_BU_RSV',YDDDH, YDLDDH, YDMDDH)
+  END DO
+END IF
+IF (LBUDGET_RV) THEN
+  IF ( KRRI >= 1 .AND. KRRL >= 1) THEN
+    CALL BUDGET_DDH (PRRS(:,:,:,1)-PRRS(:,:,:,2)-PRRS(:,:,:,4),6,'VTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH)
+  ELSE IF ( KRRL >= 1 ) THEN
+    CALL BUDGET_DDH (PRRS(:,:,:,1)-PRRS(:,:,:,2),6,'VTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH)
+  ELSE 
+    CALL BUDGET_DDH (PRRS(:,:,:,1),6,'VTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH)
+  END IF
+END IF  
+IF (LBUDGET_RC) CALL BUDGET_DDH (PRRS(:,:,:,2),7,'VTURB_BU_RRC',YDDDH, YDLDDH, YDMDDH)
+IF (LBUDGET_RI) CALL BUDGET_DDH (PRRS(:,:,:,4),9,'VTURB_BU_RRI',YDDDH, YDLDDH, YDMDDH)
+!
+!
+IF (HTURBDIM=='3DIM') THEN
+!!!!MODIF AROME
+!  CALL TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP_UVW,      &
+!          PTSTEP_MET, PTSTEP_SV, HLBCX,HLBCY,                  &
+!          OCLOSE_OUT,OTURB_FLX,OSUBG_COND,                     &
+!          HFMFILE,HLUOUT,                                      &
+!          PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                        &
+!          PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                       &
+!          PCOSSLOPE,PSINSLOPE,                                 &
+!          PRHODJ,PTHVREF,                                      &
+!          PSFTH,PSFRV,PSFSV,                                   &
+!          ZCDUEFF,ZTAU11M,ZTAU12M,ZTAU22M,ZTAU33M,             &
+!          PUM,PVM,PWM,ZUSLOPE,ZVSLOPE,PTHLM,PRM,PSVM,          &
+!          PTKEM,ZLM,ZLEPS,                                     &
+!          ZLOCPEXNM,ZATHETA,ZAMOIST,PSRCM,ZFRAC_ICE,           &
+!          ZDP,ZTP,PSIGS,                                       &
+!          PHGRAD,                                              &
+!          ZTRH,                                                &
+!          PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS                     )
+END IF
+!
+!
+IF (LBUDGET_U) CALL BUDGET_DDH (PRUS,1,'HTURB_BU_RU',YDDDH, YDLDDH, YDMDDH)
+IF (LBUDGET_V) CALL BUDGET_DDH (PRVS,2,'HTURB_BU_RV',YDDDH, YDLDDH, YDMDDH)
+IF (LBUDGET_W) CALL BUDGET_DDH (PRWS,3,'HTURB_BU_RW',YDDDH, YDLDDH, YDMDDH)
+IF (LBUDGET_TH)  THEN
+  IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
+    CALL BUDGET_DDH (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'HTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH)
+  ELSE IF ( KRRL >= 1 ) THEN
+    CALL BUDGET_DDH (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'HTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH)
   ELSE
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'VTURB', PRRS(:, :, :, 1) )
+    CALL BUDGET_DDH (PRTHLS,4,'HTURB_BU_RTH',YDDDH, YDLDDH, YDMDDH)
   END IF
 END IF
-
-IF( LBUDGET_RC ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RC), 'VTURB', PRRS(:, :, :, 2) )
-IF( LBUDGET_RI ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RI), 'VTURB', PRRS(:, :, :, 4) )
-
-IF( LBUDGET_SV )  THEN
-  DO JSV = 1, NSV
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'VTURB', PRSVS(:, :, :, JSV) )
+IF (LBUDGET_SV) THEN
+  DO JSV = 1,NSV
+    CALL BUDGET_DDH (PRSVS(:,:,:,JSV),JSV+12,'HTURB_BU_RSV',YDDDH, YDLDDH, YDMDDH)
   END DO
 END IF
-!
-!Les budgets des termes horizontaux de la turb sont présents dans AROME
-! alors que ces termes ne sont pas calculés
-#ifdef REPRO48 
-#else          
-IF( HTURBDIM == '3DIM' ) THEN
-#endif
-  IF( LBUDGET_U  ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_U ), 'HTURB', PRUS  (:, :, :) )
-  IF( LBUDGET_V  ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_V ), 'HTURB', PRVS  (:, :, :) )
-  IF( LBUDGET_W  ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_W ), 'HTURB', PRWS  (:, :, :) )
-
-  IF(LBUDGET_TH)  THEN
-    IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-      CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) + ZLVOCPEXNM(:, :, :) * PRRS(:, :, :, 2) &
-                                                                             + ZLSOCPEXNM(:, :, :) * PRRS(:, :, :, 4) )
-    ELSE IF( KRRL >= 1 ) THEN
-      CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) + ZLOCPEXNM(:, :, :) * PRRS(:, :, :, 2) )
-    ELSE
-      CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) )
-    END IF
-  END IF
-
-  IF( LBUDGET_RV ) THEN
-    IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-      CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) - PRRS(:, :, :, 4) )
-    ELSE IF( KRRL >= 1 ) THEN
-      CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) )
-    ELSE
-      CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) )
-    END IF
-  END IF
-
-  IF( LBUDGET_RC ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RC), 'HTURB', PRRS(:, :, :, 2) )
-  IF( LBUDGET_RI ) CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_RI), 'HTURB', PRRS(:, :, :, 4) )
-
-  IF( LBUDGET_SV )  THEN
-    DO JSV = 1, NSV
-      CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'HTURB', PRSVS(:, :, :, JSV) )
-    END DO
-  END IF
-!à supprimer une fois le précédent ifdef REPRO48 validé
-#ifdef REPRO48
-#else
-    CALL TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP,        &
-          HLBCX,HLBCY,OTURB_FLX,OSUBG_COND,                    &
-          TPFILE,                                              &
-          PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                        &
-          PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                       &
-          PCOSSLOPE,PSINSLOPE,                                 &
-          PRHODJ,PTHVREF,                                      &
-          PSFTH,PSFRV,PSFSV,                                   &
-          ZCDUEFF,ZTAU11M,ZTAU12M,ZTAU22M,ZTAU33M,             &
-          PUT,PVT,PWT,ZUSLOPE,ZVSLOPE,PTHLT,PRT,PSVT,          &
-          PTKET,PLEM,ZLEPS,                                    &
-          ZLOCPEXNM,ZATHETA,ZAMOIST,PSRCT,ZFRAC_ICE,           &
-          PDYP,PTHP,PSIGS,                                     &
-          ZTRH,                                                &
-          PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS                     )
-#endif
-  IF( LBUDGET_U ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_U), 'HTURB', PRUS(:, :, :) )
-  IF( LBUDGET_V ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_V), 'HTURB', PRVS(:, :, :) )
-  IF( LBUDGET_W ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_W), 'HTURB', PRWS(:, :, :) )
-
-  IF( LBUDGET_TH ) THEN
-    IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-      CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) + ZLVOCPEXNM(:, :, :) * PRRS(:, :, :, 2) &
-                                                                            + ZLSOCPEXNM(:, :, :) * PRRS(:, :, :, 4) )
-    ELSE IF( KRRL >= 1 ) THEN
-      CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) + ZLOCPEXNM(:, :, :) * PRRS(:, :, :, 2) )
-    ELSE
-      CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'HTURB', PRTHLS(:, :, :) )
-    END IF
-  END IF
-
-  IF( LBUDGET_RV ) THEN
-    IF( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-      CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) - PRRS(:, :, :, 4) )
-    ELSE IF( KRRL >= 1 ) THEN
-      CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) - PRRS(:, :, :, 2) )
-    ELSE
-      CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RV), 'HTURB', PRRS(:, :, :, 1) )
-    END IF
-  END IF
-
-  IF( LBUDGET_RC ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RC), 'HTURB', PRRS(:, :, :, 2) )
-  IF( LBUDGET_RI ) CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_RI), 'HTURB', PRRS(:, :, :, 4) )
-
-  IF( LBUDGET_SV )  THEN
-    DO JSV = 1, NSV
-      CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_SV1 - 1 + JSV), 'HTURB', PRSVS(:, :, :, JSV) )
-    END DO
+IF (LBUDGET_RV) THEN
+  IF ( KRRI >= 1 .AND. KRRL >= 1) THEN
+    CALL BUDGET_DDH (PRRS(:,:,:,1)-PRRS(:,:,:,2)-PRRS(:,:,:,4),6,'HTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH)
+  ELSE IF ( KRRL >= 1 ) THEN
+    CALL BUDGET_DDH (PRRS(:,:,:,1)-PRRS(:,:,:,2),6,'HTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH)
+  ELSE 
+    CALL BUDGET_DDH (PRRS(:,:,:,1),6,'HTURB_BU_RRV',YDDDH, YDLDDH, YDMDDH)
   END IF
-#ifdef REPRO48
-#else
-END IF
-#endif
+END IF  
+IF (LBUDGET_RC) CALL BUDGET_DDH (PRRS(:,:,:,2),7,'HTURB_BU_RRC',YDDDH, YDLDDH, YDMDDH)
+IF (LBUDGET_RI) CALL BUDGET_DDH (PRRS(:,:,:,4),9,'HTURB_BU_RRI',YDDDH, YDLDDH, YDMDDH)
+!
 !----------------------------------------------------------------------------
 !
 !*      6. EVOLUTION OF THE TKE AND ITS DISSIPATION 
@@ -1026,37 +913,25 @@ END IF
 !  6.2 TKE evolution equation
 
 IF (.NOT. LHARAT) THEN
-!
-IF (LBUDGET_TH)  THEN
-  IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) &
-                                                          & + ZLSOCPEXNM * PRRS(:,:,:,4) )
-  ELSE IF ( KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2) )
-  ELSE
-    CALL BUDGET_STORE_INIT( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS(:, :, :) )
-  END IF
-END IF
 
-CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,ZLM,ZLEPS,PDP,ZTRH,       &
+
+CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKEM,ZLM,ZLEPS,PDP,ZTRH,       &
                    & PRHODJ,PDZZ,PDXX,PDYY,PDZX,PDZY,PZZ,            &
-                   & PTSTEP,PIMPL,ZEXPL,                         &
+                   & PTSTEP_MET,PIMPL,ZEXPL,                         &
                    & HTURBLEN,HTURBDIM,                              &
-                   & TPFILE,OTURB_DIAG,           &
-                   & PTP,PRTKES,PRTHLS,ZCOEF_DISS,PTDIFF,PTDISS,&
-                   & TBUDGETS,KBUDGETS,&
-                   & PEDR=PEDR)
+                   & HFMFILE,HLUOUT,OCLOSE_OUT,OTURB_DIAG,           &
+                & PTP,PRTKES,PRTHLS,ZCOEF_DISS,PTDIFF,     &
+                & PTDISS,PEDR,YDDDH, YDLDDH, YDMDDH)
 IF (LBUDGET_TH)  THEN
   IF ( KRRI >= 1 .AND. KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) &
-                                                          & + ZLSOCPEXNM * PRRS(:,:,:,4) )
+    CALL BUDGET_DDH (PRTHLS+ ZLVOCPEXNM * PRRS(:,:,:,2) + ZLSOCPEXNM * PRRS(:,:,:,4),4,'DISSH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
   ELSE IF ( KRRL >= 1 ) THEN
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2) )
+    CALL BUDGET_DDH (PRTHLS+ ZLOCPEXNM * PRRS(:,:,:,2),4,'DISSH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
   ELSE
-    CALL BUDGET_STORE_END( TBUDGETS(NBUDGET_TH), 'DISSH', PRTHLS(:, :, :) )
+    CALL BUDGET_DDH (PRTHLS,4,'DISSH_BU_RTH',YDDDH, YDLDDH, YDMDDH)
   END IF
 END IF
-!
+
 ENDIF
 !
 !----------------------------------------------------------------------------
@@ -1064,51 +939,35 @@ ENDIF
 !*      7. STORES SOME INFORMATIONS RELATED TO THE TURBULENCE SCHEME
 !          ---------------------------------------------------------
 !
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
+  YCOMMENT=' '
 ! 
 ! stores the mixing length
 ! 
-  TZFIELD%CMNHNAME   = 'LM'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'LM'
-  TZFIELD%CUNITS     = 'm'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'Mixing length'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZLM)
+  YRECFM  ='LM'
+  YCOMMENT='X_Y_Z_LM (M)'
+  IGRID   = 1
+  ILENCH=LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   IF (KRR /= 0) THEN
 !
 ! stores the conservative potential temperature
 !
-    TZFIELD%CMNHNAME   = 'THLM'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'THLM'
-    TZFIELD%CUNITS     = 'K'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'Conservative potential temperature'
-    TZFIELD%NGRID      = 1
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,PTHLT)
+    YRECFM  ='THLM'
+    YCOMMENT='X_Y_Z_THLM (KELVIN)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PTHLM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the conservative mixing ratio
 !
-    TZFIELD%CMNHNAME   = 'RNPM'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'RNPM'
-    TZFIELD%CUNITS     = 'kg kg-1'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'Conservative mixing ratio'
-    TZFIELD%NGRID      = 1
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,PRT(:,:,:,1))
+    YRECFM  ='RNPM'
+    YCOMMENT='X_Y_Z_RNPM (KG/KG)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',PRM(:,:,:,1),IGRID,ILENCH,       &
+                                                               YCOMMENT,IRESP)
    END IF
 END IF
 !
@@ -1125,25 +984,23 @@ PDRSVS_TURB  = PRSVS - PDRSVS_TURB
 !
 IF ( KRRL >= 1 ) THEN
   IF ( KRRI >= 1 ) THEN
-    PRT(:,:,:,1)  = PRT(:,:,:,1)  - PRT(:,:,:,2)  - PRT(:,:,:,4)
+    PRM(:,:,:,1)  = PRM(:,:,:,1)  - PRM(:,:,:,2)  - PRM(:,:,:,4)
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - PRRS(:,:,:,2) - PRRS(:,:,:,4)
-    PTHLT(:,:,:)  = PTHLT(:,:,:)  + ZLVOCPEXNM(:,:,:) * PRT(:,:,:,2) &
-                                  + ZLSOCPEXNM(:,:,:) * PRT(:,:,:,4)
+    PTHLM(:,:,:)  = PTHLM(:,:,:)  + ZLVOCPEXNM(:,:,:) * PRM(:,:,:,2) &
+                                  + ZLSOCPEXNM(:,:,:) * PRM(:,:,:,4)
     PRTHLS(:,:,:) = PRTHLS(:,:,:) + ZLVOCPEXNM(:,:,:) * PRRS(:,:,:,2) &
                                   + ZLSOCPEXNM(:,:,:) * PRRS(:,:,:,4)
 !
     DEALLOCATE(ZLVOCPEXNM)
     DEALLOCATE(ZLSOCPEXNM)
   ELSE
-    PRT(:,:,:,1)  = PRT(:,:,:,1)  - PRT(:,:,:,2) 
+    PRM(:,:,:,1)  = PRM(:,:,:,1)  - PRM(:,:,:,2) 
     PRRS(:,:,:,1) = PRRS(:,:,:,1) - PRRS(:,:,:,2)
-    PTHLT(:,:,:)  = PTHLT(:,:,:)  + ZLOCPEXNM(:,:,:) * PRT(:,:,:,2)
+    PTHLM(:,:,:)  = PTHLM(:,:,:)  + ZLOCPEXNM(:,:,:) * PRM(:,:,:,2)
     PRTHLS(:,:,:) = PRTHLS(:,:,:) + ZLOCPEXNM(:,:,:) * PRRS(:,:,:,2)
   END IF
 END IF
-
-! Remove non-physical negative values (unnecessary in a perfect world) + corresponding budgets
-!CALL SOURCES_NEG_CORRECT(HCLOUD, 'NETUR',KRR,PTSTEP,PPABST,PTHLT,PRT,PRTHLS,PRRS,PRSVS)
+!
 !----------------------------------------------------------------------------
 !
 !*      9. LES averaged surface fluxes
@@ -1178,16 +1035,16 @@ IF (LLES_CALL) THEN
 !          ------------------------------------------------
 !
   IF (HTURBDIM=="1DIM") THEN
-    CALL LES_MEAN_SUBGRID(2./3.*PTKET,X_LES_SUBGRID_U2)
-    X_LES_SUBGRID_V2 = X_LES_SUBGRID_U2
-    X_LES_SUBGRID_W2 = X_LES_SUBGRID_U2
-    CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(GZ_M_W(KKA,KKU,KKL,PTHLT,PDZZ),&
+    CALL LES_MEAN_SUBGRID(2./3.*PTKEM,X_LES_SUBGRID_U2)
+    CALL LES_MEAN_SUBGRID(2./3.*PTKEM,X_LES_SUBGRID_V2)
+    CALL LES_MEAN_SUBGRID(2./3.*PTKEM,X_LES_SUBGRID_W2)
+    CALL LES_MEAN_SUBGRID(2./3.*PTKEM*MZF(GZ_M_W(PTHLM,PDZZ, KKA, KKU, KKL),&
                           KKA, KKU, KKL),X_LES_RES_ddz_Thl_SBG_W2)
     IF (KRR>=1) &
-    CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(GZ_M_W(KKA,KKU,KKL,PRT(:,:,:,1),PDZZ),&
+    CALL LES_MEAN_SUBGRID(2./3.*PTKEM*MZF(GZ_M_W(PRM(:,:,:,1),PDZZ, KKA, KKU, KKL),&
                          &KKA, KKU, KKL),X_LES_RES_ddz_Rt_SBG_W2)
     DO JSV=1,NSV
-      CALL LES_MEAN_SUBGRID(2./3.*PTKET*MZF(GZ_M_W(KKA,KKU,KKL,PSVT(:,:,:,JSV),PDZZ), &
+      CALL LES_MEAN_SUBGRID(2./3.*PTKEM*MZF(GZ_M_W(PSVM(:,:,:,JSV),PDZZ, KKA, KKU, KKL), &
                            &KKA, KKU, KKL), X_LES_RES_ddz_Sv_SBG_W2(:,:,:,JSV))
     END DO
   END IF
@@ -1202,14 +1059,13 @@ IF (LLES_CALL) THEN
 !
 !* presso-correlations for subgrid Tke are equal to zero.
 !
-  ZLEPS = 0. !ZLEPS is used as a work array (not used anymore)
-  CALL LES_MEAN_SUBGRID(ZLEPS,X_LES_SUBGRID_WP)
+  ZLM = 0.
+  CALL LES_MEAN_SUBGRID(ZLM,X_LES_SUBGRID_WP)
 !
   CALL SECOND_MNH(ZTIME2)
   XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
 END IF
 !
-IF(PRESENT(PLEM)) PLEM = ZLM
 !----------------------------------------------------------------------------
 !
 IF (LHOOK) CALL DR_HOOK('TURB',1,ZHOOK_HANDLE)
@@ -1230,14 +1086,13 @@ CONTAINS
 !!    MODIFICATIONS
 !!    -------------
 !!      Original   24/06/99
-!!      J.Escobar 21/03/2013: for HALOK comment all NHALO=1 test
 !!
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------
-USE MODE_ll
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
+!USE MODE_ll
+!USE MODD_ARGSLIST_ll, ONLY : LIST_ll
 USE MODD_CONF
 !
 IMPLICIT NONE
@@ -1249,45 +1104,45 @@ REAL, DIMENSION(:,:), INTENT(INOUT) :: PUSLOPE,PVSLOPE
 !
 !*       0.2   Declarations of local variables :
 !
-INTEGER             :: IIB,IIE,IJB,IJE,IIU,IJU ! index values for the physical subdomain
-TYPE(LIST_ll), POINTER :: TZFIELDS_ll  ! list of fields to exchange
-INTEGER                :: IINFO_ll     ! return code of parallel routine
+INTEGER             :: IIB,IIE,IJB,IJE ! index values for the physical subdomain
+!TYPE(LIST_ll), POINTER :: TZFIELDS_ll  ! list of fields to exchange
+!INTEGER                :: IINFO_ll     ! return code of parallel routine
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB:UPDATE_ROTATE_WIND',0,ZHOOK_HANDLE)
 !
 !*        1  PROLOGUE
 !
-NULLIFY(TZFIELDS_ll)
+!NULLIFY(TZFIELDS_ll)
 !
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
+!CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
 !
 !         2 Update halo if necessary
 !
-!!$IF (NHALO == 1) THEN
-  CALL ADD2DFIELD_ll( TZFIELDS_ll, PUSLOPE, 'UPDATE_ROTATE_WIND::PUSLOPE' )
-  CALL ADD2DFIELD_ll( TZFIELDS_ll, PVSLOPE, 'UPDATE_ROTATE_WIND::PVSLOPE' )
-  CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-  CALL CLEANLIST_ll(TZFIELDS_ll)
-!!$ENDIF
+!IF (NHALO == 1) THEN
+!  CALL ADD2DFIELD_ll(TZFIELDS_ll,PUSLOPE)
+!  CALL ADD2DFIELD_ll(TZFIELDS_ll,PVSLOPE)
+!  CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
+!  CALL CLEANLIST_ll(TZFIELDS_ll)
+!ENDIF
 !
 !        3 Boundary conditions for non cyclic case
 !
-IF ( HLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN
-  PUSLOPE(IIB-1,:)=PUSLOPE(IIB,:)
-  PVSLOPE(IIB-1,:)=PVSLOPE(IIB,:)
-END IF
-IF ( HLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
-  PUSLOPE(IIE+1,:)=PUSLOPE(IIE,:)
-  PVSLOPE(IIE+1,:)=PVSLOPE(IIE,:)
-END IF
-IF ( HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
-  PUSLOPE(:,IJB-1)=PUSLOPE(:,IJB)
-  PVSLOPE(:,IJB-1)=PVSLOPE(:,IJB)
-END IF
-IF(  HLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
-  PUSLOPE(:,IJE+1)=PUSLOPE(:,IJE)
-  PVSLOPE(:,IJE+1)=PVSLOPE(:,IJE)
-END IF
+!IF ( HLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN
+!  PUSLOPE(IIB-1,:)=PUSLOPE(IIB,:)
+!  PVSLOPE(IIB-1,:)=PVSLOPE(IIB,:)
+!END IF
+!IF ( HLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
+!  PUSLOPE(IIE+1,:)=PUSLOPE(IIE,:)
+!  PVSLOPE(IIE+1,:)=PVSLOPE(IIE,:)
+!END IF
+!IF ( HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
+!  PUSLOPE(:,IJB-1)=PUSLOPE(:,IJB)
+!  PVSLOPE(:,IJB-1)=PVSLOPE(:,IJB)
+!END IF
+!IF(  HLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
+!  PUSLOPE(:,IJE+1)=PUSLOPE(:,IJE)
+!  PVSLOPE(:,IJE+1)=PVSLOPE(:,IJE)
+!END IF
 !
 IF (LHOOK) CALL DR_HOOK('TURB:UPDATE_ROTATE_WIND',1,ZHOOK_HANDLE)
 !
@@ -1319,7 +1174,7 @@ IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments 
 !
-REAL,                   INTENT(IN)    :: PALP,PBETA,PGAM,PLTT,PC
+REAL                                  :: PALP,PBETA,PGAM,PLTT,PC
 REAL, DIMENSION(:,:,:), INTENT(IN)    :: PT,PEXN,PCP
 !
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLOCPEXN
@@ -1347,7 +1202,7 @@ REAL, DIMENSION(SIZE(PEXN,1),SIZE(PEXN,2),SIZE(PEXN,3)) :: ZDRVSATDT
 !
 !*      1.3 saturation  mixing ratio at t
 !
-  ZRVSAT(:,:,:) =  ZRVSAT(:,:,:) * ZEPS / ( PPABST(:,:,:) - ZRVSAT(:,:,:) )
+  ZRVSAT(:,:,:) =  ZRVSAT(:,:,:) * ZEPS / ( PPABSM(:,:,:) - ZRVSAT(:,:,:) )
 !
 !*      1.4 compute the saturation mixing ratio derivative (rvs')
 !
@@ -1361,7 +1216,7 @@ REAL, DIMENSION(SIZE(PEXN,1),SIZE(PEXN,2),SIZE(PEXN,3)) :: ZDRVSATDT
 !*      1.6 compute Atheta
 !
   PATHETA(:,:,:)= PAMOIST(:,:,:) * PEXN(:,:,:) *                             &
-        ( ( ZRVSAT(:,:,:) - PRT(:,:,:,1) ) * PLOCPEXN(:,:,:) /               &
+        ( ( ZRVSAT(:,:,:) - PRM(:,:,:,1) ) * PLOCPEXN(:,:,:) /               &
           ( 1. + ZDRVSATDT(:,:,:) * PLOCPEXN(:,:,:) )        *               &
           (                                                                  &
            ZRVSAT(:,:,:) * (1. + ZRVSAT(:,:,:)/ZEPS)                         &
@@ -1380,7 +1235,7 @@ IF (LHOOK) CALL DR_HOOK('TURB:COMPUTE_FUNCTION_THERMO',1,ZHOOK_HANDLE)
 END SUBROUTINE COMPUTE_FUNCTION_THERMO
 !
 !     ####################
-      SUBROUTINE DELT(PLM,ODZ)
+      SUBROUTINE DELT(PLM)
 !     ####################
 !!
 !!****  *DELT* routine to compute mixing length for DELT case
@@ -1402,7 +1257,6 @@ END SUBROUTINE COMPUTE_FUNCTION_THERMO
 !*       0.1   Declarations of dummy arguments 
 !
 REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLM
-LOGICAL,                INTENT(IN)    :: ODZ
 !
 !*       0.2   Declarations of local variables
 !
@@ -1412,29 +1266,16 @@ REAL                :: ZD           ! distance to the surface
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB:DELT',0,ZHOOK_HANDLE)
-IF (ODZ) THEN
-  ! Dz is take into account in the computation
-  DO JK = IKTB,IKTE ! 1D turbulence scheme
-    PLM(:,:,JK) = PZZ(:,:,JK+KKL) - PZZ(:,:,JK)
-  END DO
-  PLM(:,:,KKU) = PLM(:,:,IKE)
-  PLM(:,:,KKA) = PZZ(:,:,IKB) - PZZ(:,:,KKA)
-  IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
-    IF ( L2D) THEN
-      PLM(:,:,:) = SQRT( PLM(:,:,:)*MXF(PDXX(:,:,:)) ) 
-    ELSE
-      PLM(:,:,:) = (PLM(:,:,:)*MXF(PDXX(:,:,:))*MYF(PDYY(:,:,:)) ) ** (1./3.)
-    END IF
-  END IF
-ELSE
-  ! Dz not taken into account in computation to assure invariability with vertical grid mesh
-  PLM=1.E10
-  IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
-    IF ( L2D) THEN
-      PLM(:,:,:) = MXF(PDXX(:,:,:))
-    ELSE
-      PLM(:,:,:) = (MXF(PDXX(:,:,:))*MYF(PDYY(:,:,:)) ) ** (1./2.)
-    END IF
+DO JK = IKTB,IKTE ! 1D turbulence scheme
+  PLM(:,:,JK) = PZZ(:,:,JK+KKL) - PZZ(:,:,JK)
+END DO
+PLM(:,:,KKU) = PLM(:,:,IKE)
+PLM(:,:,KKA) = PZZ(:,:,IKB) - PZZ(:,:,KKA)
+IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
+  IF ( L2D) THEN
+    PLM(:,:,:) = SQRT( PLM(:,:,:)*MXF(PDXX(:,:,:)) ) 
+  ELSE
+    PLM(:,:,:) = (PLM(:,:,:)*MXF(PDXX(:,:,:))*MYF(PDYY(:,:,:)) ) ** (1./3.)
   END IF
 END IF
 !
@@ -1444,28 +1285,17 @@ END IF
 IF (.NOT. ORMC01) THEN
   ZALPHA=0.5**(-1.5)
   !
-  DO JJ=1,SIZE(PUT,2)
-    DO JI=1,SIZE(PUT,1)
-      IF (LOCEAN) THEN
-        DO JK=IKTE,IKTB,-1
-          ZD=ZALPHA*(PZZ(JI,JJ,IKTE+1)-PZZ(JI,JJ,JK))
-          IF ( PLM(JI,JJ,JK)>ZD) THEN
-            PLM(JI,JJ,JK)=ZD
-          ELSE
-            EXIT
-          ENDIF
-       END DO
-      ELSE
-        DO JK=IKTB,IKTE
-          ZD=ZALPHA*(0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+KKL))&
-          -PZZ(JI,JJ,IKB)) *PDIRCOSZW(JI,JJ)
-          IF ( PLM(JI,JJ,JK)>ZD) THEN
-            PLM(JI,JJ,JK)=ZD
-          ELSE
-            EXIT
-          ENDIF
-        END DO
-      ENDIF   
+  DO JJ=1,SIZE(PUM,2)
+    DO JI=1,SIZE(PUM,1)
+      DO JK=IKTB,IKTE
+        ZD=ZALPHA*(0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+KKL))&
+        -PZZ(JI,JJ,IKB)) *PDIRCOSZW(JI,JJ)
+        IF ( PLM(JI,JJ,JK)>ZD) THEN
+          PLM(JI,JJ,JK)=ZD
+        ELSE
+          EXIT
+        ENDIF
+      END DO
     END DO
   END DO
 END IF
@@ -1480,7 +1310,7 @@ END SUBROUTINE DELT
       SUBROUTINE DEAR(PLM)
 !     ####################
 !!
-!!****  *DEAR* routine to compute mixing length for DEARdorff case
+!!****  *DELT* routine to compute mixing length for DEARdorff case
 !
 !!    AUTHOR
 !!    ------
@@ -1505,10 +1335,9 @@ REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PLM
 !*       0.2   Declarations of local variables
 !
 REAL                :: ZD           ! distance to the surface
-REAL                :: ZVAR         ! Intermediary variable
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) ::   ZWORK2D
+REAL, DIMENSION(:,:), ALLOCATABLE  ::   ZWORK2D
 !
-REAL, DIMENSION(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)) ::     &
+REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) ::     &
             ZDTHLDZ,ZDRTDZ,     &!dtheta_l/dz, drt_dz used for computing the stablity
 !                                ! criterion 
             ZETHETA,ZEMOIST             !coef ETHETA and EMOIST
@@ -1519,8 +1348,9 @@ REAL, DIMENSION(SIZE(PTHLT,1),SIZE(PTHLT,2),SIZE(PTHLT,3)) ::     &
 !   initialize the mixing length with the mesh grid
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB:DEAR',0,ZHOOK_HANDLE)
-! 1D turbulence scheme
-PLM(:,:,IKTB:IKTE) = PZZ(:,:,IKTB+KKL:IKTE+KKL) - PZZ(:,:,IKTB:IKTE)
+DO JK = IKTB,IKTE ! 1D turbulence scheme
+  PLM(:,:,JK) = PZZ(:,:,JK+KKL) - PZZ(:,:,JK)
+END DO
 PLM(:,:,KKU) = PLM(:,:,IKE)
 PLM(:,:,KKA) = PZZ(:,:,IKB) - PZZ(:,:,KKA)
 IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
@@ -1532,98 +1362,53 @@ IF ( HTURBDIM /= '1DIM' ) THEN  ! 3D turbulence scheme
 END IF
 !   compute a mixing length limited by the stability
 !
-ZETHETA(:,:,:) = ETHETA(KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZATHETA,PSRCT)
-ZEMOIST(:,:,:) = EMOIST(KRR,KRRI,PTHLT,PRT,ZLOCPEXNM,ZAMOIST,PSRCT)
-!
-IF (KRR>0) THEN
-  DO JK = IKTB+1,IKTE-1
-    DO JJ=1,SIZE(PUT,2)
-      DO JI=1,SIZE(PUT,1)
-        ZDTHLDZ(JI,JJ,JK)= 0.5*((PTHLT(JI,JJ,JK+KKL)-PTHLT(JI,JJ,JK    ))/PDZZ(JI,JJ,JK+KKL)+ &
-                                (PTHLT(JI,JJ,JK    )-PTHLT(JI,JJ,JK-KKL))/PDZZ(JI,JJ,JK    ))
-        ZDRTDZ(JI,JJ,JK) = 0.5*((PRT(JI,JJ,JK+KKL,1)-PRT(JI,JJ,JK    ,1))/PDZZ(JI,JJ,JK+KKL)+ &
-                                (PRT(JI,JJ,JK    ,1)-PRT(JI,JJ,JK-KKL,1))/PDZZ(JI,JJ,JK    ))
-        IF (LOCEAN) THEN
-          ZVAR=XG*(XALPHAOC*ZDTHLDZ(JI,JJ,JK)-XBETAOC*ZDRTDZ(JI,JJ,JK))
-        ELSE
-          ZVAR=XG/PTHVREF(JI,JJ,JK)*                                                  &
-             (ZETHETA(JI,JJ,JK)*ZDTHLDZ(JI,JJ,JK)+ZEMOIST(JI,JJ,JK)*ZDRTDZ(JI,JJ,JK))
-        END IF
-        !
-        IF (ZVAR>0.) THEN
-          PLM(JI,JJ,JK)=MAX(XMNH_EPSILON,MIN(PLM(JI,JJ,JK), &
-                        0.76* SQRT(PTKET(JI,JJ,JK)/ZVAR)))
-        END IF
-      END DO
-    END DO
-  END DO
-ELSE! For dry atmos or unsalted ocean runs
-  DO JK = IKTB+1,IKTE-1
-    DO JJ=1,SIZE(PUT,2)
-      DO JI=1,SIZE(PUT,1)
-        ZDTHLDZ(JI,JJ,JK)= 0.5*((PTHLT(JI,JJ,JK+KKL)-PTHLT(JI,JJ,JK    ))/PDZZ(JI,JJ,JK+KKL)+ &
-                                (PTHLT(JI,JJ,JK    )-PTHLT(JI,JJ,JK-KKL))/PDZZ(JI,JJ,JK    ))
-        IF (LOCEAN) THEN
-          ZVAR= XG*XALPHAOC*ZDTHLDZ(JI,JJ,JK)
-        ELSE
-          ZVAR= XG/PTHVREF(JI,JJ,JK)*ZETHETA(JI,JJ,JK)*ZDTHLDZ(JI,JJ,JK)
-        END IF
+ALLOCATE(ZWORK2D(SIZE(PUM,1),SIZE(PUM,2)))
 !
-        IF (ZVAR>0.) THEN
-          PLM(JI,JJ,JK)=MAX(XMNH_EPSILON,MIN(PLM(JI,JJ,JK), &
-                        0.76* SQRT(PTKET(JI,JJ,JK)/ZVAR)))
-        END IF
-      END DO
-    END DO
-  END DO
-END IF
+ZETHETA(:,:,:) = ETHETA(KRR,KRRI,PTHLM,PRM,ZLOCPEXNM,ZATHETA,PSRCM)
+ZEMOIST(:,:,:) = EMOIST(KRR,KRRI,PTHLM,PRM,ZLOCPEXNM,ZAMOIST,PSRCM)
+!
+DO JK = IKTB+1,IKTE-1
+      ZDTHLDZ(:,:,JK)= 0.5*((PTHLM(:,:,JK+KKL)-PTHLM(:,:,JK))/PDZZ(:,:,JK+KKL)+      &
+                         (PTHLM(:,:,JK)-PTHLM(:,:,JK-KKL))/PDZZ(:,:,JK))
+      ZDRTDZ(:,:,JK)= 0.5*((PRM(:,:,JK+KKL,1)-PRM(:,:,JK,1))/PDZZ(:,:,JK+KKL)+      &
+                         (PRM(:,:,JK,1)-PRM(:,:,JK-KKL,1))/PDZZ(:,:,JK))
+       ZWORK2D(:,:)=XG/PTHVREF(:,:,JK)*                                           &
+            (ZETHETA(:,:,JK)*ZDTHLDZ(:,:,JK)+ZEMOIST(:,:,JK)*ZDRTDZ(:,:,JK))
+  !
+  WHERE(ZWORK2D(:,:)>0.)
+    PLM(:,:,JK)=MAX(1.E-10,MIN(PLM(:,:,JK),                &
+                    0.76* SQRT(PTKEM(:,:,JK)/ZWORK2D(:,:))))
+  END WHERE
+END DO
 !  special case near the surface 
-ZDTHLDZ(:,:,IKB)=(PTHLT(:,:,IKB+KKL)-PTHLT(:,:,IKB))/PDZZ(:,:,IKB+KKL)
-! For dry simulations
-IF (KRR>0) THEN
-  ZDRTDZ(:,:,IKB)=(PRT(:,:,IKB+KKL,1)-PRT(:,:,IKB,1))/PDZZ(:,:,IKB+KKL)
-ELSE
-  ZDRTDZ(:,:,IKB)=0
-ENDIF
+ZDTHLDZ(:,:,IKB)=(PTHLM(:,:,IKB+KKL)-PTHLM(:,:,IKB))/PDZZ(:,:,IKB+KKL)
+ZDRTDZ(:,:,IKB)=(PRM(:,:,IKB+KKL,1)-PRM(:,:,IKB,1))/PDZZ(:,:,IKB+KKL)
 !
-IF (LOCEAN) THEN
-  ZWORK2D(:,:)=XG*(XALPHAOC*ZDTHLDZ(:,:,IKB)-XBETAOC*ZDRTDZ(:,:,IKB))
-ELSE
-  ZWORK2D(:,:)=XG/PTHVREF(:,:,IKB)*                                           &
-              (ZETHETA(:,:,IKB)*ZDTHLDZ(:,:,IKB)+ZEMOIST(:,:,IKB)*ZDRTDZ(:,:,IKB))
-END IF
+ZWORK2D(:,:)=XG/PTHVREF(:,:,IKB)*                                           &
+            (ZETHETA(:,:,IKB)*ZDTHLDZ(:,:,IKB)+ZEMOIST(:,:,IKB)*ZDRTDZ(:,:,IKB))
 WHERE(ZWORK2D(:,:)>0.)
-  PLM(:,:,IKB)=MAX(XMNH_EPSILON,MIN( PLM(:,:,IKB),                 &
-                    0.76* SQRT(PTKET(:,:,IKB)/ZWORK2D(:,:))))
+  PLM(:,:,IKB)=MAX(1.E-10,MIN( PLM(:,:,JK),                 &
+                    0.76* SQRT(PTKEM(:,:,IKB)/ZWORK2D(:,:))))
 END WHERE
 !
+DEALLOCATE(ZWORK2D)
+!
 !  mixing length limited by the distance normal to the surface (with the same factor as for BL89)
 !
 IF (.NOT. ORMC01) THEN
   ZALPHA=0.5**(-1.5)
   !
-  DO JJ=1,SIZE(PUT,2)
-    DO JI=1,SIZE(PUT,1)
-      IF (LOCEAN) THEN
-        DO JK=IKTE,IKTB,-1
-          ZD=ZALPHA*(PZZ(JI,JJ,IKTE+1)-PZZ(JI,JJ,JK))
-          IF ( PLM(JI,JJ,JK)>ZD) THEN
-            PLM(JI,JJ,JK)=ZD
-          ELSE
-            EXIT
-          ENDIF
-        END DO
-      ELSE
-        DO JK=IKTB,IKTE
-          ZD=ZALPHA*(0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+KKL))-PZZ(JI,JJ,IKB)) &
-            *PDIRCOSZW(JI,JJ)
-          IF ( PLM(JI,JJ,JK)>ZD) THEN
-            PLM(JI,JJ,JK)=ZD
-          ELSE
-            EXIT
-          ENDIF
-        END DO
-      ENDIF 
+  DO JJ=1,SIZE(PUM,2)
+    DO JI=1,SIZE(PUM,1)
+      DO JK=IKTB,IKTE
+        ZD=ZALPHA*(0.5*(PZZ(JI,JJ,JK)+PZZ(JI,JJ,JK+KKL))-PZZ(JI,JJ,IKB)) &
+          *PDIRCOSZW(JI,JJ)
+        IF ( PLM(JI,JJ,JK)>ZD) THEN
+          PLM(JI,JJ,JK)=ZD
+        ELSE
+          EXIT
+        ENDIF
+      END DO
     END DO
   END DO
 END IF
@@ -1689,10 +1474,10 @@ IMPLICIT NONE
 REAL :: ZPENTE            ! Slope of the amplification straight line
 REAL :: ZCOEF_AMPL_CEI_NUL! Ordonnate at the origin of the
                           ! amplification straight line
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZCOEF_AMPL
+REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3)) :: ZCOEF_AMPL
                           ! Amplification coefficient of the mixing length
                           ! when the instability criterium is verified 
-REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZLM_CLOUD
+REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3)) :: ZLM_CLOUD
                           ! Turbulent mixing length in the clouds
 !
 !-------------------------------------------------------------------------------
@@ -1732,14 +1517,14 @@ ELSE
 !
 !*         3.1 BL89 mixing length
 !           ------------------
-  CASE ('BL89','RM17','ADAP')
+  CASE ('BL89')
     ZSHEAR=0.
-    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD)
+    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKEM,ZSHEAR,ZLM_CLOUD)
 !
 !*         3.2 Delta mixing length
 !           -------------------
   CASE ('DELT')
-    CALL DELT(ZLM_CLOUD,ODZ=.TRUE.)
+    CALL DELT(ZLM_CLOUD)
 !
 !*         3.3 Deardorff mixing length
 !           -----------------------
@@ -1753,18 +1538,12 @@ ENDIF
 !              -----------------------------------------------
 !
 ! Impression before modification of the mixing length
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
-  TZFIELD%CMNHNAME   = 'LM_CLEAR_SKY'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'LM_CLEAR_SKY'
-  TZFIELD%CUNITS     = 'm'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_LM CLEAR SKY'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZLM)
+IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
+  YRECFM  ='LM_CLEAR_SKY'
+  YCOMMENT='X_Y_Z_LM CLEAR SKY (M)'
+  IGRID   = 1
+  ILENCH  = LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM,IGRID,ILENCH,YCOMMENT,IRESP)
 ENDIF
 !
 ! Amplification of the mixing length when the criteria are verified
@@ -1779,29 +1558,18 @@ WHERE (PCEI(:,:,:) == -1.) ZLM(:,:,:) = ZLM_CLOUD(:,:,:)
 !*       5.    IMPRESSION
 !              ----------
 !
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
-  TZFIELD%CMNHNAME   = 'COEF_AMPL'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'COEF_AMPL'
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_COEF AMPL'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZCOEF_AMPL)
+IF ( OTURB_DIAG .AND. OCLOSE_OUT ) THEN
+  YRECFM  ='COEF_AMPL'
+  YCOMMENT='X_Y_Z_COEF AMPL (-)'
+  IGRID   = 1
+  ILENCH  = LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZCOEF_AMPL,IGRID,ILENCH,YCOMMENT,IRESP)
   !
-  TZFIELD%CMNHNAME   = 'LM_CLOUD'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'LM_CLOUD'
-  TZFIELD%CUNITS     = 'm'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_LM CLOUD'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZLM_CLOUD)
+  YRECFM  ='LM_CLOUD'
+  YCOMMENT='X_Y_Z_LM CLOUD (M)'
+  IGRID   = 1
+  ILENCH  = LEN(YCOMMENT)
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZLM_CLOUD,IGRID,ILENCH,YCOMMENT,IRESP)
   !
 ENDIF
 !
diff --git a/src/common/turb/mode_turb_ver.F90 b/src/arome/turb/turb_ver.F90
similarity index 78%
rename from src/common/turb/mode_turb_ver.F90
rename to src/arome/turb/turb_ver.F90
index f58596abb..3d8b6dd0d 100644
--- a/src/common/turb/mode_turb_ver.F90
+++ b/src/arome/turb/turb_ver.F90
@@ -1,14 +1,9 @@
-!MNH_LIC Copyright 1994-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.
-MODULE MODE_TURB_VER
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
-                      OTURB_FLX,                                    &
-                      HTURBDIM,HTOM,PIMPL,PEXPL,                    &
-                      PTSTEP, TPFILE,                               &
+!     ######spl
+      SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
+                      OCLOSE_OUT,OTURB_FLX,                         &
+                      HTURBDIM,HTOM,PIMPL,PEXPL,                    & 
+                      PTSTEP_UVW,PTSTEP_MET, PTSTEP_SV,             &
+                      HFMFILE,HLUOUT,                               &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,PTHVREF,                               &
@@ -20,7 +15,10 @@ SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                       PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH,        &
                       PSBL_DEPTH,PLMO,                              &
                       PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS,             &
-                      PDP,PTP,PSIGS,PWTH,PWRC,PWSV                  )
+                      PDP,PTP,PSIGS,PWTH,PWRC,PWSV)
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+      USE MODD_CTURB, ONLY : LHARAT
 !     ###############################################################
 !
 !
@@ -111,11 +109,17 @@ SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
 !!                               field to be derivated
 !!                               _(M,UW,...) represent the localization of the 
 !!                               field	derivated
+!!                               
 !!
-!!      SUBROUTINE TRIDIAG     : to compute the split implicit evolution
+!!      MXM,MXF,MYM,MYF,MZM,MZF
+!!                             :  Shuman functions (mean operators)     
+!!      DXF,DYF,DZF,DZM
+!!                             :  Shuman functions (difference operators)     
+!!                               
+!!      SUBROUTINE TRIDIAG     : to compute the splitted implicit evolution
 !!                               of a variable located at a mass point
 !!
-!!      SUBROUTINE TRIDIAG_WIND: to compute the split implicit evolution
+!!      SUBROUTINE TRIDIAG_WIND: to compute the splitted implicit evolution
 !!                               of a variable located at a wind point
 !!
 !!      FUNCTIONs ETHETA and EMOIST  :  
@@ -196,47 +200,35 @@ SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
 !!                              advection schemes
 !!                     Feb. 2012  (Y. Seity) add possibility to run with
 !!                                 reversed vertical levels
-!!                     10/2012 (J.Escobar) Bypass PGI bug , redefine some allocatable array inplace of automatic
-!!                     08/2014 (J.Escobar) Bypass PGI memory leak bug , replace IF statement with IF THEN ENDIF
 !!      Modifications: July,    2015  (Wim de Rooy) switch for HARATU (Racmo turbulence scheme)
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! JL Redelsperger 03/2021 : add Ocean LES case
 !!--------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CST
 USE MODD_CTURB
-USE MODD_DYN_n,          ONLY: LOCEAN
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
-USE MODD_NSV,            ONLY: NSV
+USE MODD_NSV, ONLY : NSV
 !
-!USE MODE_PRANDTL, ONLY: PRANDTL
-USE MODE_EMOIST, ONLY: EMOIST
-USE MODE_ETHETA, ONLY: ETHETA
+USE MODI_PRANDTL
+USE MODI_EMOIST
+USE MODI_ETHETA
 USE MODI_GRADIENT_M
 USE MODI_GRADIENT_W
 USE MODI_TURB
-USE MODE_TURB_VER_THERMO_FLUX, ONLY: TURB_VER_THERMO_FLUX
-USE MODE_TURB_VER_THERMO_CORR, ONLY: TURB_VER_THERMO_CORR
-USE MODE_TURB_VER_DYN_FLUX, ONLY: TURB_VER_DYN_FLUX
-USE MODE_TURB_VER_SV_FLUX, ONLY: TURB_VER_SV_FLUX
-USE MODE_TURB_VER_SV_CORR, ONLY: TURB_VER_SV_CORR
+USE MODI_TURB_VER_THERMO_FLUX
+USE MODI_TURB_VER_THERMO_CORR
+USE MODI_TURB_VER_DYN_FLUX
+USE MODI_TURB_VER_SV_FLUX
+USE MODI_TURB_VER_SV_CORR
 USE MODI_LES_MEAN_SUBGRID
-USE MODE_SBL_DEPTH, ONLY: SBL_DEPTH
-USE MODI_SECOND_MNH
+USE MODI_SBL_DEPTH
 !
-USE MODE_IO_FIELD_WRITE, only: IO_Field_write
+USE MODE_FMWRIT
 USE MODE_PRANDTL
 !
-!
 IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
@@ -249,14 +241,21 @@ INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -
 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)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
 LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
-CHARACTER(len=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
                                                       ! turbulence scheme
-CHARACTER(len=4),       INTENT(IN)   ::  HTOM         ! type of Third Order Moment
+CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
-REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
-TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
+REAL,                   INTENT(IN)   ::  PTSTEP_UVW   ! Dynamical timestep 
+REAL,                   INTENT(IN)   ::  PTSTEP_MET   ! Timestep for meteorological variables                        
+REAL,                   INTENT(IN)   ::  PTSTEP_SV    ! Timestep for tracer variables
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
                                                       ! Metric coefficients
@@ -299,6 +298,7 @@ REAL, DIMENSION(:,:),   INTENT(IN)   ::  PVSLOPEM     ! wind component along the
                                      ! direction normal to the maximum slope one
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
+!
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
 ! PLENGTHM PLENGTHH used in case of LHARATU
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLENGTHM     ! Turb. mixing length momentum
@@ -336,9 +336,7 @@ REAL, DIMENSION(:,:,:,:),INTENT(OUT) :: PWSV       ! scalar flux
 !
 !*       0.2  declaration of local variables
 !
-!JUAN BUG PGI
-!!$REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ::  &
-REAL, ALLOCATABLE, DIMENSION(:,:,:)  ::  &
+REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ::  &
        ZBETA,    & ! buoyancy coefficient
        ZSQRT_TKE,& ! sqrt(e)
        ZDTH_DZ,  & ! d(th)/dz
@@ -359,14 +357,17 @@ REAL, ALLOCATABLE, DIMENSION(:,:,:)  ::  &
        ZWV,      & ! (v'w')
        ZTHLP,    & ! guess of potential temperature due to vert. turbulent flux
        ZRP         ! guess of total water due to vert. turbulent flux
-
-!!$REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3),NSV)  ::  &
-REAL, ALLOCATABLE, DIMENSION(:,:,:,:)  ::  &
+REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3),NSV)  ::  &
        ZPSI_SV,  & ! Prandtl number for scalars
-       ZREDS1,   & ! 1D Redelsperger number R_sv
-       ZRED2THS, & ! 3D Redelsperger number R*2_thsv
-       ZRED2RS     ! 3D Redelsperger number R*2_rsv
+       ZREDS1,   & ! 1D Redeslperger number R_sv
+       ZRED2THS, & ! 3D Redeslperger number R*2_thsv
+       ZRED2RS     ! 3D Redeslperger number R*2_rsv
 REAL, DIMENSION(SIZE(PLM,1),SIZE(PLM,2),SIZE(PLM,3))  ::  ZLM
+INTEGER             :: IRESP        ! Return code of FM routines 
+INTEGER             :: IGRID        ! C-grid indicator in LFIFM file 
+INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 LOGICAL :: GUSERV    ! flag to use water vapor
 INTEGER :: IKB,IKE   ! index value for the Beginning
@@ -374,53 +375,27 @@ INTEGER :: IKB,IKE   ! index value for the Beginning
 INTEGER :: JSV       ! loop counter on scalar variables
 REAL    :: ZTIME1
 REAL    :: ZTIME2
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-TYPE(TFIELDDATA) :: TZFIELD
-!----------------------------------------------------------------------------
-ALLOCATE (      ZBETA(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))    ,&
-       ZSQRT_TKE(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),& 
-       ZDTH_DZ(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ,&
-       ZDR_DZ(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))   ,&
-       ZRED2TH3(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) ,& 
-       ZRED2R3(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ,&
-       ZRED2THR3(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)),&
-       ZBLL_O_E(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)) ,&
-       ZETHETA(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ,&
-       ZEMOIST(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ,&
-       ZREDTH1(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ,&
-       ZREDR1(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))   ,&
-       ZPHI3(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))    ,&
-       ZPSI3(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))    ,&
-       ZD(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))       ,&
-       ZWTHV(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))    ,&
-       ZWU(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))      ,&
-       ZWV(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))      ,&
-       ZTHLP(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))    ,&
-       ZRP(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))     )   
-
-ALLOCATE ( &
- ZPSI_SV(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3),NSV),  &
- ZREDS1(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3),NSV),   &
- ZRED2THS(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3),NSV), &
- ZRED2RS(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3),NSV)   )
-
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
 !             -------------
 !
+REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB_VER',0,ZHOOK_HANDLE)
+PTP (:,:,:) = 0.
+PDP (:,:,:) = 0.
 !
 IKB=KKA+JPVEXT_TURB*KKL
 IKE=KKU-JPVEXT_TURB*KKL
+
 !
 !
 ! 3D Redelsperger numbers
 !
 !
-CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OTURB_FLX,       &
+CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OCLOSE_OUT,OTURB_FLX,        &
              HTURBDIM,                             &
-             TPFILE,                               &
+             HFMFILE,HLUOUT,                       &
              PDXX,PDYY,PDZZ,PDZX,PDZY,             &
              PTHVREF,PLOCPEXNM,PATHETA,PAMOIST,    &
              PLM,PLEPS,PTKEM,PTHLM,PRM,PSVM,PSRCM, &
@@ -429,14 +404,9 @@ CALL PRANDTL(KKA,KKU,KKL,KRR,KRRI,OTURB_FLX,       &
              ZREDS1,ZRED2THS, ZRED2RS,             &
              ZBLL_O_E,                             &
              ZETHETA, ZEMOIST                      )
-!
 ! Buoyancy coefficient
 !
-IF (LOCEAN) THEN
-  ZBETA = XG*XALPHAOC
-ELSE
-  ZBETA = XG/PTHVREF
-END IF
+ZBETA = XG/PTHVREF
 !
 ! Square root of Tke
 !
@@ -444,17 +414,17 @@ ZSQRT_TKE = SQRT(PTKEM)
 !
 ! gradients of mean quantities at previous time-step
 !
-ZDTH_DZ = GZ_M_W(KKA, KKU, KKL,PTHLM(:,:,:),PDZZ)
+ZDTH_DZ = GZ_M_W(PTHLM(:,:,:),PDZZ, KKA, KKU, KKL)
 ZDR_DZ  = 0.
-IF (KRR>0) ZDR_DZ  = GZ_M_W(KKA, KKU, KKL,PRM(:,:,:,1),PDZZ)
+IF (KRR>0) ZDR_DZ  = GZ_M_W(PRM(:,:,:,1),PDZZ, KKA, KKU, KKL)
 !
 !
 ! Denominator factor in 3rd order terms
 !
 IF (.NOT. LHARAT) THEN
-  ZD(:,:,:) = (1.+ZREDTH1+ZREDR1) * (1.+0.5*(ZREDTH1+ZREDR1))
+ZD(:,:,:) = (1.+ZREDTH1+ZREDR1) * (1.+0.5*(ZREDTH1+ZREDR1))
 ELSE
-  ZD(:,:,:) = 1.
+ZD(:,:,:) = 1.
 ENDIF
 !
 ! Phi3 and Psi3 Prandtl numbers
@@ -480,6 +450,8 @@ IF (LLES_CALL) THEN
   CALL SECOND_MNH(ZTIME2)
   XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
 END IF
+
+!ENDIF
 !----------------------------------------------------------------------------
 !
 !
@@ -496,15 +468,16 @@ END IF
 !
 
 IF (LHARAT) THEN
-  ZLM=PLENGTHH
+ZLM=PLENGTHH
 ELSE
-  ZLM=PLM
+ZLM=PLM
 ENDIF
 !
   CALL  TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,               &
-                        OTURB_FLX,HTURBDIM,HTOM,                      &
-                        PIMPL,PEXPL,PTSTEP,                           &
-                        TPFILE,                                       &
+                        OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
+                        PIMPL,PEXPL,                                  &
+                        PTSTEP_MET,                                   &
+                        HFMFILE,HLUOUT,                               &
                         PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                         PRHODJ,PTHVREF,                               &
                         PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -518,10 +491,14 @@ ENDIF
                         MFMOIST,PBL_DEPTH,ZWTHV,                      &
                         PRTHLS,PRRS,ZTHLP,ZRP,PTP,PWTH,PWRC )
 !
+!
+!
+!  Use Lh (=Lq) from vdfexcuhl as input for turb_ver_thermo_corr
+
   CALL  TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,               &
-                        OTURB_FLX,HTURBDIM,HTOM,                      &
+                        OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                         PIMPL,PEXPL,                                  &
-                        TPFILE,                                       &
+                        HFMFILE,HLUOUT,                               &
                         PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,           &
                         PRHODJ,PTHVREF,                               &
                         PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -548,12 +525,15 @@ ENDIF
 !             -----------------------------------------------
 !
 !
-IF (LHARAT) ZLM=PLENGTHM
-!
+IF (LHARAT) THEN
+ZLM=PLENGTHM
+ENDIF
+
 CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
-                      OTURB_FLX,KRR,                                &
-                      HTURBDIM,PIMPL,PEXPL,PTSTEP,                  &
-                      TPFILE,                                       &
+                      OCLOSE_OUT,OTURB_FLX,KRR,                     &
+                      HTURBDIM,PIMPL,PEXPL,                         &
+                      PTSTEP_UVW,                                   &
+                      HFMFILE,HLUOUT,                               &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,                                       &
@@ -561,7 +541,7 @@ CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
                       PTHLM,PRM,PSVM,PUM,PVM,PWM,PUSLOPEM,PVSLOPEM, &
                       PTKEM,ZLM,MFMOIST,ZWU,ZWV,                    &
                       PRUS,PRVS,PRWS,                               &
-                      PDP,PTP                                       )
+                      PDP,PTP                               )
 !
 !----------------------------------------------------------------------------
 !
@@ -569,13 +549,16 @@ CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
 !*       8.   SOURCES OF PASSIVE SCALAR VARIABLES
 !             -----------------------------------
 !
-IF (LHARAT) ZLM=PLENGTHH
-!
+IF (LHARAT) THEN
+ZLM=PLENGTHH
+ENDIF
+
 IF (SIZE(PSVM,4)>0)                                                 &
 CALL  TURB_VER_SV_FLUX(KKA,KKU,KKL,                                 &
-                      OTURB_FLX,HTURBDIM,                           &
-                      PIMPL,PEXPL,PTSTEP,                           &
-                      TPFILE,                                       &
+                      OCLOSE_OUT,OTURB_FLX,HTURBDIM,                &
+                      PIMPL,PEXPL,                                  &
+                      PTSTEP_SV,                                    &
+                      HFMFILE,HLUOUT,                               &
                       PDZZ,PDIRCOSZW,                               &
                       PRHODJ,PWM,                                   &
                       PSFSVM,PSFSVP,                                &
@@ -585,7 +568,7 @@ CALL  TURB_VER_SV_FLUX(KKA,KKU,KKL,                                 &
 !
 !
 IF (SIZE(PSVM,4)>0 .AND. LLES_CALL)                                 &
-CALL  TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,                   &
+CALL  TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,                               &
                       PDZZ,                                         &
                       PTHLM,PRM,PTHVREF,                            &
                       PLOCPEXNM,PATHETA,PAMOIST,PSRCM,ZPHI3,ZPSI3,  &
@@ -607,57 +590,40 @@ IF (SIZE(PSBL_DEPTH)>0) CALL SBL_DEPTH(IKB,IKE,PZZ,ZWU,ZWV,ZWTHV,PLMO,PSBL_DEPTH
 !             ------
 !
 !
-IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. LHARAT) THEN
+IF ( OTURB_FLX .AND. OCLOSE_OUT .AND. .NOT. LHARAT) THEN
 !
 ! stores the Turbulent Prandtl number
 ! 
-  TZFIELD%CMNHNAME   = 'PHI3'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'PHI3'
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'Turbulent Prandtl number'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZPHI3)
+  YRECFM  ='PHI3'
+  YCOMMENT='X_Y_Z_PHI3 (0)'
+  IGRID   = 4
+  ILENCH=LEN(YCOMMENT)
+  CALL  FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPHI3,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ! stores the Turbulent Schmidt number
 ! 
-  TZFIELD%CMNHNAME   = 'PSI3'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'PSI3'
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'Turbulent Schmidt number'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZPSI3)
+  YRECFM  ='PSI3'
+  YCOMMENT='X_Y_Z_PSI3 (0)'
+  IGRID   = 4
+  ILENCH=LEN(YCOMMENT)
+!
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPSI3,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !
 ! stores the Turbulent Schmidt number for the scalar variables
 ! 
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CUNITS     = '1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
   DO JSV=1,NSV
-    WRITE(TZFIELD%CMNHNAME, '("PSI_SV_",I3.3)') JSV
-    TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-    TZFIELD%CCOMMENT   = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME)
-    CALL IO_Field_write(TPFILE,TZFIELD,ZPSI_SV(:,:,:,JSV))
+    WRITE(YRECFM, '("PSI_SV_",I3.3)') JSV
+    YCOMMENT='X_Y_Z_'//YRECFM//' (0)'
+    IGRID   = 4
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZPSI_SV(:,:,:,JSV),   &
+                IGRID,ILENCH,YCOMMENT,IRESP)
   END DO
-!
+
 END IF
 !
 !
 !----------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('TURB_VER',1,ZHOOK_HANDLE)
-END SUBROUTINE TURB_VER
-END MODULE MODE_TURB_VER 
+END SUBROUTINE TURB_VER                                                                                               
diff --git a/src/common/turb/mode_turb_ver_dyn_flux.F90 b/src/arome/turb/turb_ver_dyn_flux.F90
similarity index 72%
rename from src/common/turb/mode_turb_ver_dyn_flux.F90
rename to src/arome/turb/turb_ver_dyn_flux.F90
index 4e01503a6..6c3c5f5c7 100644
--- a/src/common/turb/mode_turb_ver_dyn_flux.F90
+++ b/src/arome/turb/turb_ver_dyn_flux.F90
@@ -1,15 +1,9 @@
-!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 MODE_TURB_VER_DYN_FLUX
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL,                     &
-                      OTURB_FLX,KRR,                                &
+!     ######spl
+      SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL,                     &
+                      OCLOSE_OUT,OTURB_FLX,KRR,                     &
                       HTURBDIM,PIMPL,PEXPL,                         &
                       PTSTEP,                                       &
-                      TPFILE,                                       &
+                      HFMFILE,HLUOUT,                               &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PCOSSLOPE,PSINSLOPE,                          &
                       PRHODJ,                                       &
@@ -18,6 +12,10 @@ SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL,                     &
                       PTKEM,PLM,MFMOIST,PWU,PWV,                    &
                       PRUS,PRVS,PRWS,                               &
                       PDP,PTP                                       )
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+      USE MODD_CTURB, ONLY : LHARAT
+
 !     ###############################################################
 !
 !
@@ -115,7 +113,10 @@ SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL,                     &
 !!      DXF,DYF,DZF,DZM
 !!                             :  Shuman functions (difference operators)     
 !!                               
-!!      SUBROUTINE TRIDIAG_WIND: to compute the split implicit evolution
+!!      SUBROUTINE TRIDIAG     : to compute the splitted implicit evolution
+!!                               of a variable located at a mass point
+!!
+!!      SUBROUTINE TRIDIAG_WIND: to compute the splitted implicit evolution
 !!                               of a variable located at a wind point
 !!
 !!      FUNCTIONs ETHETA and EMOIST  :  
@@ -194,45 +195,31 @@ SUBROUTINE TURB_VER_DYN_FLUX(KKA,KKU,KKL,                     &
 !!                                              change of YCOMMENT
 !!      2012-02 Y. Seity,  add possibility to run with reversed vertical levels
 !!      Modifications  July 2015 (Wim de Rooy) LHARATU switch
-!!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!      Q. Rodier      17/01/2019 : cleaning : remove cyclic conditions on DP and ZA
-!! JL Redelsperger 03/2021 : Add Ocean  & O-A Autocoupling LES Cases
+
 !!--------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CONF
 USE MODD_CST
 USE MODD_CTURB
-USE MODD_DYN_n,          ONLY: LOCEAN
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
+USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_NSV
-USE MODD_OCEANH
-USE MODD_PARAMETERS
-USE MODD_REF, ONLY : LCOUPLES
-USE MODD_TURB_n
 !
 !
 USE MODI_GRADIENT_U
 USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
-USE MODI_SECOND_MNH
 USE MODI_SHUMAN , ONLY: MZM, MZF, MXM, MXF, MYM, MYF,&
                       & DZM, DXF, DXM, DYF, DYM
-USE MODE_TRIDIAG_WIND, ONLY: TRIDIAG_WIND
+USE MODI_TRIDIAG 
+USE MODI_TRIDIAG_WIND 
+USE MODE_FMWRIT
 USE MODI_LES_MEAN_SUBGRID
 !
-USE MODE_IO_FIELD_WRITE, only: IO_Field_write
-USE MODE_ll
-!
 IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
@@ -242,14 +229,19 @@ IMPLICIT NONE
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
 INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
 LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
 INTEGER,                INTENT(IN)   ::  KRR          ! number of moist var.
-CHARACTER(len=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the 
                                                       ! turbulence scheme
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
                                                       ! Metric coefficients
@@ -289,8 +281,8 @@ REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PWV          ! momentum flux v'w'
 REAL, DIMENSION(:,:,:), INTENT(INOUT)   ::  PRUS, PRVS, PRWS
                             ! cumulated sources for the prognostic variables
 !
-REAL, DIMENSION(:,:,:), INTENT(OUT)  ::  PDP          ! Dynamic TKE production term
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTP          ! Thermal TKE production term
+REAL, DIMENSION(:,:,:), INTENT(INOUT)::  PDP,PTP   ! Dynamic and thermal
+                                                   ! TKE production terms
 !
 !
 !
@@ -312,12 +304,17 @@ REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))  ::  &
        ZFLXZ,  &   ! vertical flux of the treated variable
        ZSOURCE,  & ! source of evolution for the treated variable
        ZKEFF       ! effectif diffusion coeff = LT * SQRT( TKE )
+INTEGER             :: IRESP        ! Return code of FM routines 
+INTEGER             :: IGRID        ! C-grid indicator in LFIFM file 
+INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 INTEGER             :: IIB,IIE, &   ! I index values for the Beginning and End
                        IJB,IJE, &   ! mass points of the domain in the 3 direct.
                        IKB,IKE      !
 INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain
 INTEGER             :: JSV          ! scalar loop counter
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1) :: ZCOEFFLXU, &
                                     ZCOEFFLXV, ZUSLOPEM, ZVSLOPEM
                                     ! coefficients for the surface flux
@@ -326,32 +323,33 @@ REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1) :: ZCOEFFLXU, &
 INTEGER             :: IIU,IJU      ! size of array in x,y,z directions
 !
 REAL :: ZTIME1, ZTIME2, ZCMFS
-TYPE(TFIELDDATA) :: TZFIELD
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
 !             -------------
+!
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB_VER_DYN_FLUX',0,ZHOOK_HANDLE)
-!
-ZA=XUNDEF
-PDP=XUNDEF
-!
 IIU=SIZE(PUM,1)
+IIE=IIU-JPHEXT
+IIB=1+JPHEXT
 IJU=SIZE(PUM,2)
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE,IIU,IJU)
-IKB=KKA+JPVEXT_TURB*KKL
-IKE=KKU-JPVEXT_TURB*KKL
+IJE=IJU-JPHEXT
+IJB=1+JPHEXT
 IKB=KKA+JPVEXT_TURB*KKL
 IKE=KKU-JPVEXT_TURB*KKL
 IKT=SIZE(PUM,3)          
 IKTB=1+JPVEXT_TURB              
 IKTE=IKT-JPVEXT_TURB
+
+
 !
 ZSOURCE = 0.
 ZFLXZ   = 0.
 ZCMFS = XCMFS
-IF (LHARAT) ZCMFS=1.
+IF (LHARAT)THEN
+  ZCMFS=1.
+ENDIF
 !
 ZDIRSINZW(:,:) = SQRT(1.-PDIRCOSZW(:,:)**2)
 !  compute the coefficients for the uncentred gradient computation near the 
@@ -360,9 +358,9 @@ ZDIRSINZW(:,:) = SQRT(1.-PDIRCOSZW(:,:)**2)
 ! With LHARATU length scale and TKE are at half levels so remove MZM
 !
 IF (LHARAT) THEN
-  ZKEFF(:,:,:) =  PLM(:,:,:) * SQRT(PTKEM(:,:,:)) + 50*MFMOIST(:,:,:)
+ZKEFF(:,:,:) =  PLM(:,:,:) * SQRT(PTKEM(:,:,:)) + 50*MFMOIST(:,:,:)
 ELSE 
-  ZKEFF(:,:,:) = MZM(PLM(:,:,:) * SQRT(PTKEM(:,:,:)), KKA, KKU, KKL)
+ZKEFF(:,:,:) = MZM(PLM(:,:,:) * SQRT(PTKEM(:,:,:)), KKA, KKU, KKL)
 ENDIF
 
 !
@@ -383,6 +381,7 @@ ZA(:,:,:)    = -PTSTEP * ZCMFS *                              &
               MXM( ZKEFF ) * MXM(MZM(PRHODJ, KKA, KKU, KKL)) / &
               MXM( PDZZ )**2
 !
+IF (CPROGRAM/='AROME ') ZA(1,:,:)=ZA(IIE,:,:)
 !
 ! Compute the source of U wind component 
 !
@@ -399,50 +398,27 @@ ZCOEFS(:,:,1)=  ZCOEFFLXU(:,:,1) * PCOSSLOPE(:,:) * PDIRCOSZW(:,:)  &
 ! average this flux to be located at the U,W vorticity point
 ZCOEFS(:,:,1:1)=MXM(ZCOEFS(:,:,1:1) / PDZZ(:,:,IKB:IKB) )
 !
+! compute the explicit tangential flux at the W point
+ZSOURCE(:,:,IKB)     =                                                    &
+    PTAU11M(:,:) * PCOSSLOPE(:,:) * PDIRCOSZW(:,:) * ZDIRSINZW(:,:)         &
+   -PTAU12M(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:)                          &
+   -PTAU33M(:,:) * PCOSSLOPE(:,:) * ZDIRSINZW(:,:) * PDIRCOSZW(:,:)  
 !
-! ZSOURCE= FLUX /DZ
-IF (LOCEAN) THEN  ! OCEAN MODEL ONLY
-  ! Sfx flux assumed to be in SI & at vorticity point
-  IF (LCOUPLES) THEN  
-    ZSOURCE(:,:,IKE:IKE) = XSSUFL_C(:,:,1:1)/PDZZ(:,:,IKE:IKE) &
-         *0.5 * ( 1. + MXM(PRHODJ(:,:,KKU:KKU)) / MXM(PRHODJ(:,:,IKE:IKE))) 
-  ELSE
-    ZSOURCE(:,:,IKE)     = XSSUFL(:,:)
-    ZSOURCE(:,:,IKE:IKE) = ZSOURCE (:,:,IKE:IKE) /PDZZ(:,:,IKE:IKE) &
-        *0.5 * ( 1. + MXM(PRHODJ(:,:,KKU:KKU)) / MXM(PRHODJ(:,:,IKE:IKE)) )
-  ENDIF
-  !No flux at the ocean domain bottom
-   ZSOURCE(:,:,IKB)           = 0.
-   ZSOURCE(:,:,IKTB+1:IKTE-1) = 0
-!
-ELSE             !ATMOS MODEL ONLY
-  IF (LCOUPLES) THEN 
-   ZSOURCE(:,:,IKB:IKB) = XSSUFL_C(:,:,1:1)/PDZZ(:,:,IKB:IKB) &
-      * 0.5 * ( 1. + MXM(PRHODJ(:,:,KKA:KKA)) / MXM(PRHODJ(:,:,IKB:IKB)) )
-  ELSE               
-    ! compute the explicit tangential flux at the W point
-    ZSOURCE(:,:,IKB)     =                                              &
-     PTAU11M(:,:) * PCOSSLOPE(:,:) * PDIRCOSZW(:,:) * ZDIRSINZW(:,:) &
-     -PTAU12M(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:)                  &
-     -PTAU33M(:,:) * PCOSSLOPE(:,:) * ZDIRSINZW(:,:) * PDIRCOSZW(:,:)  
-!
-    ! add the vertical part or the surface flux at the U,W vorticity point
-!
-    ZSOURCE(:,:,IKB:IKB) =                                  &
-    (   MXM( ZSOURCE(:,:,IKB:IKB)   / PDZZ(:,:,IKB:IKB) ) &
-    +  MXM( ZCOEFFLXU(:,:,1:1) / PDZZ(:,:,IKB:IKB)       &
+! add the vertical part or the surface flux at the U,W vorticity point
+
+ZSOURCE(:,:,IKB:IKB) =                                      &
+  (   MXM( ZSOURCE(:,:,IKB:IKB)   / PDZZ(:,:,IKB:IKB) )     &
+   +  MXM( ZCOEFFLXU(:,:,1:1) / PDZZ(:,:,IKB:IKB)      &
            *ZUSLOPEM(:,:,1:1)                           &
-          -ZCOEFFLXV(:,:,1:1) / PDZZ(:,:,IKB:IKB)       &
-           *ZVSLOPEM(:,:,1:1)                      )    &
-    -  ZCOEFS(:,:,1:1) * PUM(:,:,IKB:IKB) * PIMPL        &
-    ) * 0.5 * ( 1. + MXM(PRHODJ(:,:,KKA:KKA)) / MXM(PRHODJ(:,:,IKB:IKB)) )
-  ENDIF 
+          -ZCOEFFLXV(:,:,1:1) / PDZZ(:,:,IKB:IKB)      &
+           *ZVSLOPEM(:,:,1:1)                      )     &
+   -  ZCOEFS(:,:,1:1) * PUM(:,:,IKB:IKB) * PIMPL            &
+  ) * 0.5 * ( 1. + MXM(PRHODJ(:,:,KKA:KKA)) / MXM(PRHODJ(:,:,IKB:IKB)) )
 !
-  ZSOURCE(:,:,IKTB+1:IKTE-1) = 0.
-  ZSOURCE(:,:,IKE) = 0.
-ENDIF !end ocean or atmosphere cases
+ZSOURCE(:,:,IKTB+1:IKTE-1) = 0.
+ZSOURCE(:,:,IKE) = 0.
 !
-! Obtention of the split U at t+ deltat 
+! Obtention of the splitted U at t+ deltat 
 !
 CALL TRIDIAG_WIND(KKA,KKU,KKL,PUM,ZA,ZCOEFS(:,:,1),PTSTEP,PEXPL,PIMPL,   &
                   MXM(PRHODJ),ZSOURCE,ZRES)
@@ -467,26 +443,14 @@ ZFLXZ(:,:,IKB:IKB)   =   MXM(PDZZ(:,:,IKB:IKB))  *                &
 !
 ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) 
 
-IF (LOCEAN) THEN !ocean model at phys sfc (ocean domain top)
-  ZFLXZ(:,:,IKE:IKE)   =   MXM(PDZZ(:,:,IKE:IKE))  *                &
-                           ZSOURCE(:,:,IKE:IKE)                     &
-                           / 0.5 / ( 1. + MXM(PRHODJ(:,:,KKU:KKU)) / MXM(PRHODJ(:,:,IKE:IKE)) )
-  ZFLXZ(:,:,KKU) = ZFLXZ(:,:,IKE) 
-END IF
 !
-IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
   ! stores the U wind component vertical flux
-  TZFIELD%CMNHNAME   = 'UW_VFLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'UW_VFLX'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'U wind component vertical flux'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+  YRECFM  ='UW_VFLX'
+  YCOMMENT='X_Y_Z_UW_VFLX (M**2/S**2)'
+  IGRID   = 4  
+  ILENCH=LEN(YCOMMENT) 
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! first part of total momentum flux
@@ -502,15 +466,7 @@ PDP(:,:,:) = - MZF(MXF(ZFLXZ * GZ_U_UW(PUM,PDZZ, KKA, KKU, KKL)), KKA, KKU, KKL)
 PDP(:,:,IKB:IKB) = - MXF (                                                      &
   ZFLXZ(:,:,IKB+KKL:IKB+KKL) * (PUM(:,:,IKB+KKL:IKB+KKL)-PUM(:,:,IKB:IKB))  &
                          / MXM(PDZZ(:,:,IKB+KKL:IKB+KKL))                   &
-                         )
-!
-IF (LOCEAN) THEN
-  ! evaluate the dynamic production at w(IKE-KKL) in PDP(IKE)
-  PDP(:,:,IKE:IKE) = - MXF (                                                      &
-    ZFLXZ(:,:,IKE-KKL:IKE-KKL) * (PUM(:,:,IKE:IKE)-PUM(:,:,IKE-KKL:IKE-KKL))  &
-                           / MXM(PDZZ(:,:,IKE-KKL:IKE-KKL))                   &
-                           ) 
-END IF
+                         ) 
 !
 ! Storage in the LES configuration
 ! 
@@ -529,12 +485,8 @@ END IF
 !
 IF(HTURBDIM=='3DIM') THEN
   ! Compute the source for the W wind component
-                ! used to compute the W source at the ground
   ZFLXZ(:,:,KKA) = 2 * ZFLXZ(:,:,IKB) - ZFLXZ(:,:,IKB+KKL) ! extrapolation 
- IF (LOCEAN) THEN
-   ZFLXZ(:,:,KKU) = 2 * ZFLXZ(:,:,IKE) - ZFLXZ(:,:,IKE-KKL) ! extrapolation 
- END IF     
-     
+                ! used to compute the W source at the ground
   !
   IF (.NOT. LFLAT) THEN
     PRWS(:,:,:)= PRWS                                      &
@@ -564,21 +516,6 @@ IF(HTURBDIM=='3DIM') THEN
      ) / (0.5*(PDXX(:,:,IKB+KKL:IKB+KKL)+PDXX(:,:,IKB:IKB)))                 &
                           )
   !
-IF (LOCEAN) THEN
-  ! evaluate the dynamic production at w(IKE-KKL) in PDP(IKE)
-  ZA(:,:,IKE:IKE) = - MXF (                                                  &
-   ZFLXZ(:,:,IKE-KKL:IKE-KKL) *                                              &
-     ( DXM( PWM(:,:,IKE-KKL:IKE-KKL) )                                       &
-      -MXM(  (PWM(:,:,IKE-2*KKL:IKE-2*KKL   )-PWM(:,:,IKE-KKL:IKE-KKL))      &
-              /(PDZZ(:,:,IKE-2*KKL:IKE-2*KKL)+PDZZ(:,:,IKE-KKL:IKE-KKL))     &
-            +(PWM(:,:,IKE-KKL:IKE-KKL)-PWM(:,:,IKE:IKE  ))                   &
-              /(PDZZ(:,:,IKE-KKL:IKE-KKL)+PDZZ(:,:,IKE:IKE  ))               &
-          )                                                                  &
-         * PDZX(:,:,IKE-KKL:IKE-KKL)                                         &
-     ) / (0.5*(PDXX(:,:,IKE-KKL:IKE-KKL)+PDXX(:,:,IKE:IKE)))                 &
-                          )
-END IF
-  !
   PDP(:,:,:)=PDP(:,:,:)+ZA(:,:,:)
   !
   ! Storage in the LES configuration
@@ -587,7 +524,7 @@ END IF
     CALL SECOND_MNH(ZTIME1)
     CALL LES_MEAN_SUBGRID(MZF(MXF(GX_W_UW(PWM,PDXX,&
       PDZZ,PDZX, KKA, KKU, KKL)*ZFLXZ), KKA, KKU, KKL), X_LES_RES_ddxa_W_SBG_UaW )
-    CALL LES_MEAN_SUBGRID(MXF(GX_M_U(KKA, KKU, KKL,PTHLM,PDXX,PDZZ,PDZX)&
+    CALL LES_MEAN_SUBGRID(MXF(GX_M_U(PTHLM,PDXX,PDZZ,PDZX, KKA, KKU, KKL)&
       * MZF(ZFLXZ, KKA, KKU, KKL)), X_LES_RES_ddxa_Thl_SBG_UaW )
     IF (KRR>=1) THEN
       CALL LES_MEAN_SUBGRID(MXF(GX_U_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX, KKA, KKU, KKL)&
@@ -617,6 +554,7 @@ ZA(:,:,:)    = - PTSTEP * ZCMFS *                              &
               MYM( PDZZ )**2
 !
 !
+IF(CPROGRAM/='AROME ') ZA(:,1,:)=ZA(:,IJE,:)
 !
 ! Compute the source of V wind component
 ! compute the coefficient between the vertical flux and the 2 components of the 
@@ -632,46 +570,26 @@ ZCOEFS(:,:,1)=  ZCOEFFLXU(:,:,1) * PSINSLOPE(:,:) * PDIRCOSZW(:,:)  &
 ! average this flux to be located at the V,W vorticity point
 ZCOEFS(:,:,1:1)=MYM(ZCOEFS(:,:,1:1) / PDZZ(:,:,IKB:IKB) )
 !
-IF (LOCEAN) THEN ! Ocean case
-  IF (LCOUPLES) THEN
-    ZSOURCE(:,:,IKE:IKE) =  XSSVFL_C(:,:,1:1)/PDZZ(:,:,IKE:IKE) &
-        *0.5 * ( 1. + MYM(PRHODJ(:,:,KKU:KKU)) / MYM(PRHODJ(:,:,IKE:IKE)) ) 
-  ELSE 
-    ZSOURCE(:,:,IKE) = XSSVFL(:,:)
-    ZSOURCE(:,:,IKE:IKE) = ZSOURCE(:,:,IKE:IKE)/PDZZ(:,:,IKE:IKE) &
-        *0.5 * ( 1. + MYM(PRHODJ(:,:,KKU:KKU)) / MYM(PRHODJ(:,:,IKE:IKE)) )
-  END IF
-  !No flux at the ocean domain bottom
-  ZSOURCE(:,:,IKB) = 0.
-ELSE ! Atmos case
-  IF (.NOT.LCOUPLES) THEN !  only atmosp without coupling
-  ! compute the explicit tangential flux at the W point
-    ZSOURCE(:,:,IKB)       =                                                  &
-      PTAU11M(:,:) * PSINSLOPE(:,:) * PDIRCOSZW(:,:) * ZDIRSINZW(:,:)         &
-     +PTAU12M(:,:) * PCOSSLOPE(:,:) * ZDIRSINZW(:,:)                          &
-     -PTAU33M(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) 
-!
-  ! add the vertical part or the surface flux at the V,W vorticity point
-  ZSOURCE(:,:,IKB:IKB) =                                      &
-    (   MYM( ZSOURCE(:,:,IKB:IKB)   / PDZZ(:,:,IKB:IKB) )     &
-     +  MYM( ZCOEFFLXU(:,:,1:1) / PDZZ(:,:,IKB:IKB)           &
-            *ZUSLOPEM(:,:,1:1)                                &
-            +ZCOEFFLXV(:,:,1:1) / PDZZ(:,:,IKB:IKB)           &
-            *ZVSLOPEM(:,:,1:1)                      )         &
-     - ZCOEFS(:,:,1:1) * PVM(:,:,IKB:IKB) * PIMPL             &
-    ) * 0.5 * ( 1. + MYM(PRHODJ(:,:,KKA:KKA)) / MYM(PRHODJ(:,:,IKB:IKB)) )
-!
-  ELSE   !atmosphere when coupling
-    ! input flux assumed to be in SI and at vorticity point
-    ZSOURCE(:,:,IKB:IKB) =     -XSSVFL_C(:,:,1:1)/(1.*PDZZ(:,:,IKB:IKB)) &
-      * 0.5 * ( 1. + MYM(PRHODJ(:,:,KKA:KKA)) / MYM(PRHODJ(:,:,IKB:IKB)) )
-  ENDIF
-  !No flux at the atmosphere top
-  ZSOURCE(:,:,IKE) = 0.
-ENDIF ! End of Ocean or Atmospher Cases
+! compute the explicit tangential flux at the W point
+ZSOURCE(:,:,IKB)       =                                                  &
+    PTAU11M(:,:) * PSINSLOPE(:,:) * PDIRCOSZW(:,:) * ZDIRSINZW(:,:)         &
+   +PTAU12M(:,:) * PCOSSLOPE(:,:) * ZDIRSINZW(:,:)                          &
+   -PTAU33M(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) 
+!
+! add the vertical part or the surface flux at the V,W vorticity point
+ZSOURCE(:,:,IKB:IKB) =                                      &
+  (   MYM( ZSOURCE(:,:,IKB:IKB)   / PDZZ(:,:,IKB:IKB) )         &
+   +  MYM( ZCOEFFLXU(:,:,1:1) / PDZZ(:,:,IKB:IKB)           &
+          *ZUSLOPEM(:,:,1:1)                            &
+          +ZCOEFFLXV(:,:,1:1) / PDZZ(:,:,IKB:IKB)           &
+          *ZVSLOPEM(:,:,1:1)                      )     &
+   - ZCOEFS(:,:,1:1) * PVM(:,:,IKB:IKB) * PIMPL             &
+  ) * 0.5 * ( 1. + MYM(PRHODJ(:,:,KKA:KKA)) / MYM(PRHODJ(:,:,IKB:IKB)) )
+!
 ZSOURCE(:,:,IKTB+1:IKTE-1) = 0.
+ZSOURCE(:,:,IKE) = 0.
 ! 
-!  Obtention of the split V at t+ deltat 
+!  Obtention of the splitted V at t+ deltat 
 CALL TRIDIAG_WIND(KKA,KKU,KKL,PVM,ZA,ZCOEFS(:,:,1),PTSTEP,PEXPL,PIMPL,  &
                   MYM(PRHODJ),ZSOURCE,ZRES)
 !
@@ -695,26 +613,13 @@ ZFLXZ(:,:,IKB:IKB)   =   MYM(PDZZ(:,:,IKB:IKB))  *                       &
 !
 ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB)
 !
-IF (LOCEAN) THEN
-  ZFLXZ(:,:,IKE:IKE)   =   MYM(PDZZ(:,:,IKE:IKE))  *                &
-      ZSOURCE(:,:,IKE:IKE)                                          &
-      / 0.5 / ( 1. + MYM(PRHODJ(:,:,KKU:KKU)) / MYM(PRHODJ(:,:,IKE:IKE)) )
-  ZFLXZ(:,:,KKU) = ZFLXZ(:,:,IKE) 
-END IF
-!
-IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
   ! stores the V wind component vertical flux
-  TZFIELD%CMNHNAME   = 'VW_VFLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'VW_VFLX'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'V wind component vertical flux'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+  YRECFM  ='VW_VFLX'
+  YCOMMENT='X_Y_Z_VW_VFLX (M**2/S**2)'
+  IGRID   = 4
+  ILENCH=LEN(YCOMMENT)  
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! second part of total momentum flux
@@ -733,14 +638,6 @@ ZFLXZ(:,:,IKB+KKL:IKB+KKL) * (PVM(:,:,IKB+KKL:IKB+KKL)-PVM(:,:,IKB:IKB))  &
                        / MYM(PDZZ(:,:,IKB+KKL:IKB+KKL))               &
                        )
 !
-IF (LOCEAN) THEN
-  ! evaluate the dynamic production at w(IKE-KKL) in PDP(IKE)
-  ZA(:,:,IKE:IKE) = - MYF (                                                  &
-   ZFLXZ(:,:,IKE-KKL:IKE-KKL) * (PVM(:,:,IKE:IKE)-PVM(:,:,IKE-KKL:IKE-KKL))  &
-                          / MYM(PDZZ(:,:,IKE-KKL:IKE-KKL))                   &
-                          )
-END IF
-!
 PDP(:,:,:)=PDP(:,:,:)+ZA(:,:,:)
 !
 ! Storage in the LES configuration
@@ -760,9 +657,6 @@ END IF
 IF(HTURBDIM=='3DIM') THEN
   ! Compute the source for the W wind component
   ZFLXZ(:,:,KKA) = 2 * ZFLXZ(:,:,IKB) - ZFLXZ(:,:,IKB+KKL) ! extrapolation 
-  IF (LOCEAN) THEN
-    ZFLXZ(:,:,KKU) = 2 * ZFLXZ(:,:,IKE) - ZFLXZ(:,:,IKE-KKL) ! extrapolation 
-  END IF
   !
   IF (.NOT. L2D) THEN 
     IF (.NOT. LFLAT) THEN
@@ -790,23 +684,9 @@ IF(HTURBDIM=='3DIM') THEN
                 /(PDZZ(:,:,IKB+KKL:IKB+KKL)+PDZZ(:,:,IKB:IKB  ))           &
             )                                                              &
           * PDZY(:,:,IKB+KKL:IKB+KKL)                                      &
-       ) / (0.5*(PDYY(:,:,IKB+KKL:IKB+KKL)+PDYY(:,:,IKB:IKB)))             &
+       ) / (0.5*(PDYY(:,:,IKB+KKL:IKB+KKL)+PDYY(:,:,IKB:IKB)))                     &
                             )
   !
-    IF (LOCEAN) THEN
-     ZA(:,:,IKE:IKE) = - MYF (                                              &
-      ZFLXZ(:,:,IKE-KKL:IKE-KKL) *                                          &
-        ( DYM( PWM(:,:,IKE-KKL:IKE-KKL) )                                   &
-         -MYM(  (PWM(:,:,IKE-2*KKL:IKE-2*KKL)-PWM(:,:,IKE-KKL:IKE-KKL))     &
-                 /(PDZZ(:,:,IKE-2*KKL:IKE-2*KKL)+PDZZ(:,:,IKE-KKL:IKE-KKL)) &
-               +(PWM(:,:,IKE-KKL:IKE-KKL)-PWM(:,:,IKE:IKE  ))               &
-                 /(PDZZ(:,:,IKE-KKL:IKE-KKL)+PDZZ(:,:,IKE:IKE  ))           &
-             )                                                              &
-           * PDZY(:,:,IKE-KKL:IKE-KKL)                                      &
-        ) / (0.5*(PDYY(:,:,IKE-KKL:IKE-KKL)+PDYY(:,:,IKE:IKE)))             &
-                            )
-    END IF
-!    
     PDP(:,:,:)=PDP(:,:,:)+ZA(:,:,:)
   !
   END IF
@@ -818,7 +698,7 @@ IF(HTURBDIM=='3DIM') THEN
     CALL LES_MEAN_SUBGRID(MZF(MYF(GY_W_VW(PWM,PDYY,&
                          &PDZZ,PDZY, KKA, KKU, KKL)*ZFLXZ), KKA, KKU, KKL), &
                          &X_LES_RES_ddxa_W_SBG_UaW , .TRUE. )
-    CALL LES_MEAN_SUBGRID(MYF(GY_M_V(KKA, KKU, KKL,PTHLM,PDYY,PDZZ,PDZY)*&
+    CALL LES_MEAN_SUBGRID(MYF(GY_M_V(PTHLM,PDYY,PDZZ,PDZY, KKA, KKU, KKL)*&
                          &MZF(ZFLXZ, KKA, KKU, KKL)), &
                          &X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE. )
     IF (KRR>=1) THEN
@@ -832,33 +712,35 @@ IF(HTURBDIM=='3DIM') THEN
   !
 END IF
 !
+! complete the dynamic production at the marginal points
+IF (CPROGRAM/='AROME ') THEN
+  PDP(:,:,KKA)= -999.
+  PDP(:,:,KKU)= -999.
+  PDP(:,1,:)= PDP(:,IJE,:)
+  PDP(:,IJE+1,:)= PDP(:,IJB,:)
+  PDP(1,:,:)= PDP(IIE,:,:)
+  PDP(IIE+1,:,:)= PDP(IIB,:,:)
+END IF
 !
 !----------------------------------------------------------------------------
 !
 !*       7.   DIAGNOSTIC COMPUTATION OF THE 1D <W W> VARIANCE
 !             -----------------------------------------------
 !
-IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. HTURBDIM == '1DIM') THEN
+IF ( OTURB_FLX .AND. OCLOSE_OUT .AND. HTURBDIM == '1DIM') THEN
   ZFLXZ(:,:,:)= (2./3.) * PTKEM(:,:,:)                     &
      -ZCMFS*PLM(:,:,:)*SQRT(PTKEM(:,:,:))*GZ_W_M(PWM,PDZZ, KKA, KKU, KKL)
   ! to be tested &
   !   +XCMFB*(4./3.)*PLM(:,:,:)/SQRT(PTKEM(:,:,:))*PTP(:,:,:) 
   ! stores the W variance
-  TZFIELD%CMNHNAME   = 'W_VVAR'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'W_VVAR'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_W_VVAR'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+  YRECFM  ='W_VVAR'
+  YCOMMENT='X_Y_Z_W_VVAR (M**2/S**2)'
+  IGRID   = 1  
+  ILENCH=LEN(YCOMMENT) 
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !----------------------------------------------------------------------------
 !
 IF (LHOOK) CALL DR_HOOK('TURB_VER_DYN_FLUX',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_DYN_FLUX
-END MODULE MODE_TURB_VER_DYN_FLUX
diff --git a/src/common/turb/mode_turb_ver_sv_corr.F90 b/src/arome/turb/turb_ver_sv_corr.F90
similarity index 80%
rename from src/common/turb/mode_turb_ver_sv_corr.F90
rename to src/arome/turb/turb_ver_sv_corr.F90
index 4deb47ce7..25744253b 100644
--- a/src/common/turb/mode_turb_ver_sv_corr.F90
+++ b/src/arome/turb/turb_ver_sv_corr.F90
@@ -1,16 +1,12 @@
-!MNH_LIC Copyright 2002-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 MODE_TURB_VER_SV_CORR
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,        &
+!     ######spl
+      SUBROUTINE TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,        &
                       PDZZ,                                         &
                       PTHLM,PRM,PTHVREF,                            &
                       PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PPHI3,PPSI3,  &
                       PWM,PSVM,                                     &
                       PTKEM,PLM,PLEPS,PPSI_SV                       )
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     ###############################################################
 !
 !
@@ -52,16 +48,12 @@ SUBROUTINE TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,        &
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_CONF
 USE MODD_NSV, ONLY : NSV,NSV_LGBEG,NSV_LGEND
-USE MODD_BLOWSNOW
 !
 !
 USE MODI_GRADIENT_U
@@ -69,12 +61,10 @@ USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
 USE MODI_SHUMAN , ONLY : MZF
-USE MODE_EMOIST, ONLY: EMOIST
-USE MODE_ETHETA, ONLY: ETHETA
+USE MODI_EMOIST
+USE MODI_ETHETA
 USE MODI_LES_MEAN_SUBGRID
 !
-USE MODI_SECOND_MNH
-!
 IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
@@ -114,9 +104,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PPSI_SV      ! Inv.Turb.Sch.for scalars
 !
 REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3))  ::  &
        ZA, ZFLXZ
-!
-REAL :: ZCSV          !constant for the scalar flux
-!
 INTEGER             :: JSV          ! loop counters
 !
 REAL :: ZTIME1, ZTIME2
@@ -130,13 +117,6 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB_VER_SV_CORR',0,ZHOOK_HANDLE)
 CALL SECOND_MNH(ZTIME1)
 !
-IF(LBLOWSNOW) THEN
-! See Vionnet (PhD, 2012) for a complete discussion around the value of the Schmidt number for blowing snow variables          
-   ZCSV= XCHF/XRSNOW
-ELSE
-   ZCSV= XCHF
-ENDIF
-!
 DO JSV=1,NSV
   !
   IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE
@@ -145,8 +125,8 @@ DO JSV=1,NSV
   !
   IF (LLES_CALL) THEN
     ! approximation: diagnosed explicitely (without implicit term)
-    ZFLXZ(:,:,:) =  PPSI_SV(:,:,:,JSV)*GZ_M_W(KKA, KKU, KKL,PSVM(:,:,:,JSV),PDZZ)**2
-    ZFLXZ(:,:,:) = ZCSV / ZCSVD * PLM * PLEPS * MZF(ZFLXZ(:,:,:), KKA, KKU, KKL)
+    ZFLXZ(:,:,:) =  PPSI_SV(:,:,:,JSV)*GZ_M_W(PSVM(:,:,:,JSV),PDZZ, KKA, KKU, KKL)**2
+    ZFLXZ(:,:,:) = XCHF / ZCSVD * PLM * PLEPS * MZF(ZFLXZ(:,:,:), KKA, KKU, KKL)
     CALL LES_MEAN_SUBGRID(-2.*ZCSVD*SQRT(PTKEM)*ZFLXZ/PLEPS, X_LES_SUBGRID_DISS_Sv2(:,:,:,JSV) )
     CALL LES_MEAN_SUBGRID(MZF(PWM, KKA, KKU, KKL)*ZFLXZ, X_LES_RES_W_SBG_Sv2(:,:,:,JSV) )
   END IF
@@ -156,18 +136,18 @@ DO JSV=1,NSV
   IF (LLES_CALL) THEN
     ! approximation: diagnosed explicitely (without implicit term)
     ZA(:,:,:)   =  ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM)
-    ZFLXZ(:,:,:)= ( XCSHF * PPHI3 + ZCSV * PPSI_SV(:,:,:,JSV) )              &
-                  *  GZ_M_W(KKA, KKU, KKL,PTHLM,PDZZ)                          &
-                  *  GZ_M_W(KKA, KKU, KKL,PSVM(:,:,:,JSV),PDZZ)
+    ZFLXZ(:,:,:)= ( XCSHF * PPHI3 + XCHF * PPSI_SV(:,:,:,JSV) )              &
+                  *  GZ_M_W(PTHLM,PDZZ, KKA, KKU, KKL)                          &
+                  *  GZ_M_W(PSVM(:,:,:,JSV),PDZZ, KKA, KKU, KKL)
     ZFLXZ(:,:,:)= PLM * PLEPS / (2.*ZCTSVD) * MZF(ZFLXZ, KKA, KKU, KKL)
     CALL LES_MEAN_SUBGRID( ZA*ZFLXZ, X_LES_SUBGRID_SvThv(:,:,:,JSV) ) 
     CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLXZ, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE.)
     !
     IF (KRR>=1) THEN
       ZA(:,:,:)   =  EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM)
-      ZFLXZ(:,:,:)= ( ZCSV * PPSI3 + ZCSV * PPSI_SV(:,:,:,JSV) )             &
-                    *  GZ_M_W(KKA, KKU, KKL,PRM(:,:,:,1),PDZZ)                 &
-                    *  GZ_M_W(KKA, KKU, KKL,PSVM(:,:,:,JSV),PDZZ)
+      ZFLXZ(:,:,:)= ( XCHF * PPSI3 + XCHF * PPSI_SV(:,:,:,JSV) )             &
+                    *  GZ_M_W(PRM(:,:,:,1),PDZZ, KKA, KKU, KKL)                 &
+                    *  GZ_M_W(PSVM(:,:,:,JSV),PDZZ, KKA, KKU, KKL)
       ZFLXZ(:,:,:)= PLM * PLEPS / (2.*ZCQSVD) * MZF(ZFLXZ, KKA, KKU, KKL)
       CALL LES_MEAN_SUBGRID( ZA*ZFLXZ, X_LES_SUBGRID_SvThv(:,:,:,JSV) , .TRUE.)
       CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLXZ, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE.)
@@ -182,4 +162,3 @@ XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
 !
 IF (LHOOK) CALL DR_HOOK('TURB_VER_SV_CORR',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_SV_CORR
-END MODULE MODE_TURB_VER_SV_CORR
diff --git a/src/common/turb/mode_turb_ver_sv_flux.F90 b/src/arome/turb/turb_ver_sv_flux.F90
similarity index 84%
rename from src/common/turb/mode_turb_ver_sv_flux.F90
rename to src/arome/turb/turb_ver_sv_flux.F90
index 271ee734e..d19712dc5 100644
--- a/src/common/turb/mode_turb_ver_sv_flux.F90
+++ b/src/arome/turb/turb_ver_sv_flux.F90
@@ -1,15 +1,9 @@
-!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 MODE_TURB_VER_SV_FLUX
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE TURB_VER_SV_FLUX(KKA,KKU,KKL,                      &
-                      OTURB_FLX,HTURBDIM,                           &
+!     ######spl
+      SUBROUTINE TURB_VER_SV_FLUX(KKA,KKU,KKL,                      &
+                      OCLOSE_OUT,OTURB_FLX,HTURBDIM,                &
                       PIMPL,PEXPL,                                  &
                       PTSTEP,                                       &
-                      TPFILE,                                       &
+                      HFMFILE,HLUOUT,                               &
                       PDZZ,PDIRCOSZW,                               &
                       PRHODJ,PWM,                                   &
                       PSFSVM,PSFSVP,                                &
@@ -17,6 +11,10 @@ SUBROUTINE TURB_VER_SV_FLUX(KKA,KKU,KKL,                      &
                       PTKEM,PLM,MFMOIST,PPSI_SV,                    &
                       PRSVS,PWSV                                    )
 !
+
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+      USE MODD_CTURB, ONLY : LHARAT
 !
 !
 !!****  *TURB_VER_SV_FLUX* -compute the source terms due to the vertical turbulent
@@ -113,10 +111,10 @@ SUBROUTINE TURB_VER_SV_FLUX(KKA,KKU,KKL,                      &
 !!      DXF,DYF,DZF,DZM
 !!                             :  Shuman functions (difference operators)     
 !!                               
-!!      SUBROUTINE TRIDIAG     : to compute the split implicit evolution
+!!      SUBROUTINE TRIDIAG     : to compute the splitted implicit evolution
 !!                               of a variable located at a mass point
 !!
-!!      SUBROUTINE TRIDIAG_WIND: to compute the split implicit evolution
+!!      SUBROUTINE TRIDIAG_WIND: to compute the splitted implicit evolution
 !!                               of a variable located at a wind point
 !!
 !!      FUNCTIONs ETHETA and EMOIST  :  
@@ -197,42 +195,31 @@ SUBROUTINE TURB_VER_SV_FLUX(KKA,KKU,KKL,                      &
 !!                                              change of YCOMMENT
 !!                     Feb 2012(Y. Seity) add possibility to run with reversed 
 !!                                              vertical levels
-!!      Modifications: July 2015 (Wim de Rooy) LHARAT switch
-!!                     Feb 2017(M. Leriche) add initialisation of ZSOURCE
-!!                                   to avoid unknwon values outside physical domain
-!!                                   and avoid negative values in sv tendencies
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      Modifications: July 2015 (Wim de Rooy) LHARATU switch
 !!--------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CST
 USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_CONF
-USE MODD_NSV,            ONLY: XSVMIN, NSV_LGBEG, NSV_LGEND
-USE MODD_BLOWSNOW
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
+USE MODD_NSV, ONLY : NSV_LGBEG,NSV_LGEND
 !
 USE MODI_GRADIENT_U
 USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
 USE MODI_SHUMAN , ONLY : DZM, MZM, MZF
-USE MODE_TRIDIAG, ONLY: TRIDIAG
-USE MODE_EMOIST, ONLY: EMOIST
-USE MODE_ETHETA, ONLY: ETHETA
+USE MODI_TRIDIAG 
+USE MODI_TRIDIAG_WIND 
+USE MODI_EMOIST
+USE MODI_ETHETA
+USE MODE_FMWRIT
 USE MODI_LES_MEAN_SUBGRID
 !
-USE MODI_SECOND_MNH
-!
 IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
@@ -241,13 +228,18 @@ IMPLICIT NONE
 INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
 INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
 INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=ARO
+LOGICAL,                INTENT(IN)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
 LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
-CHARACTER(len=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDZZ
                                                       ! Metric coefficients
@@ -289,6 +281,9 @@ REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3))  ::  &
        ZFLXZ,  &   ! vertical flux of the treated variable
        ZSOURCE,  & ! source of evolution for the treated variable
        ZKEFF       ! effectif diffusion coeff = LT * SQRT( TKE )
+INTEGER             :: IRESP        ! Return code of FM routines 
+INTEGER             :: IGRID        ! C-grid indicator in LFIFM file 
+INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 INTEGER             :: IKB,IKE      ! I index values for the Beginning and End
                                     ! mass points of the domain in the 3 direct.
 INTEGER             :: IKT          ! array size in k direction
@@ -296,13 +291,12 @@ INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain
 INTEGER             :: JSV          ! loop counters
 INTEGER             :: JK           ! loop
 INTEGER             :: ISV          ! number of scalar var.
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 REAL :: ZTIME1, ZTIME2
 
 REAL :: ZCSVP = 4.0  ! constant for scalar flux presso-correlation (RS81)
-REAL :: ZCSV          !constant for the scalar flux
-!
-TYPE(TFIELDDATA)  :: TZFIELD
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
@@ -320,17 +314,12 @@ IKTB =1+JPVEXT_TURB
 ISV=SIZE(PSVM,4)
 !
 IF (LHARAT) THEN
-  ZKEFF(:,:,:) =  PLM(:,:,:) * SQRT(PTKEM(:,:,:)) + 50.*MFMOIST(:,:,:)
+ZKEFF(:,:,:) =  PLM(:,:,:) * SQRT(PTKEM(:,:,:)) + 50.*MFMOIST(:,:,:)
 ELSE
-  ZKEFF(:,:,:) = MZM(PLM(:,:,:) * SQRT(PTKEM(:,:,:)), KKA, KKU, KKL)
+ZKEFF(:,:,:) = MZM(PLM(:,:,:) * SQRT(PTKEM(:,:,:)), KKA, KKU, KKL)
 ENDIF
+
 !
-IF(LBLOWSNOW) THEN
-! See Vionnet (PhD, 2012) for a complete discussion around the value of the Schmidt number for blowing snow variables           
-   ZCSV= XCHF/XRSNOW
-ELSE
-   ZCSV= XCHF
-ENDIF
 !----------------------------------------------------------------------------
 !
 !*       8.   SOURCES OF PASSIVE SCALAR VARIABLES
@@ -341,16 +330,15 @@ DO JSV=1,ISV
   IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE
 !
 ! Preparation of the arguments for TRIDIAG 
-    IF (LHARAT) THEN
-      ZA(:,:,:)    = -PTSTEP*   &
-                   ZKEFF * MZM(PRHODJ, KKA, KKU, KKL) /   &
-                   PDZZ**2
-    ELSE
-      ZA(:,:,:)    = -PTSTEP*ZCSV*PPSI_SV(:,:,:,JSV) *   &
-                   ZKEFF * MZM(PRHODJ, KKA, KKU, KKL) /   &
-                   PDZZ**2
-    ENDIF
-  ZSOURCE(:,:,:) = 0.
+IF (LHARAT) THEN
+  ZA(:,:,:)    = -PTSTEP*   &
+                 ZKEFF * MZM(PRHODJ, KKA, KKU, KKL) /   &
+                 PDZZ**2
+ELSE
+  ZA(:,:,:)    = -PTSTEP*XCHF*PPSI_SV(:,:,:,JSV) *   &
+                 ZKEFF * MZM(PRHODJ, KKA, KKU, KKL) /   &
+                 PDZZ**2
+ENDIF
 !
 ! Compute the sources for the JSVth scalar variable
 
@@ -371,17 +359,17 @@ DO JSV=1,ISV
   ZSOURCE(:,:,IKTB+1:IKTE-1) = 0.
   ZSOURCE(:,:,IKE) = 0.
 !
-! Obtention of the split JSV scalar variable at t+ deltat  
+! Obtention of the splitted JSV scalar variable at t+ deltat  
   CALL TRIDIAG(KKA,KKU,KKL,PSVM(:,:,:,JSV),ZA,PTSTEP,PEXPL,PIMPL,PRHODJ,ZSOURCE,ZRES)
 !
 !  Compute the equivalent tendency for the JSV scalar variable
   PRSVS(:,:,:,JSV)= PRSVS(:,:,:,JSV)+    &
                     PRHODJ(:,:,:)*(ZRES(:,:,:)-PSVM(:,:,:,JSV))/PTSTEP
 !
-  IF ( (OTURB_FLX .AND. TPFILE%LOPENED) .OR. LLES_CALL ) THEN
+  IF ( (OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL ) THEN
     ! Diagnostic of the cartesian vertical flux
     !
-    ZFLXZ(:,:,:) = -ZCSV * PPSI_SV(:,:,:,JSV) * MZM(PLM*SQRT(PTKEM), KKA, KKU, KKL) / PDZZ * &
+    ZFLXZ(:,:,:) = -XCHF * PPSI_SV(:,:,:,JSV) * MZM(PLM*SQRT(PTKEM), KKA, KKU, KKL) / PDZZ * &
                   DZM(PIMPL*ZRES(:,:,:) + PEXPL*PSVM(:,:,:,JSV), KKA, KKU, KKL)
     ! surface flux
     !* in 3DIM case, a part of the flux goes vertically, and another goes horizontally
@@ -405,31 +393,23 @@ DO JSV=1,ISV
     PWSV(:,:,IKE,JSV)=PWSV(:,:,IKE-KKL,JSV)
  END IF
   !
-  IF (OTURB_FLX .AND. TPFILE%LOPENED) THEN
+  IF (OTURB_FLX .AND. OCLOSE_OUT) THEN
     ! stores the JSVth vertical flux
-    WRITE(TZFIELD%CMNHNAME,'("WSV_FLX_",I3.3)') JSV
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-    !PW: TODO: use the correct units of the JSV variable (and multiply it by m s-1)
-    TZFIELD%CUNITS     = 'SVUNIT m s-1'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME)
-    TZFIELD%NGRID      = 4
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    !
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+    WRITE(YRECFM,'("WSV_FLX_",I3.3)') JSV 
+    YCOMMENT='X_Y_Z_'//YRECFM//' (SVUNIT*M/S)'
+    IGRID   = 4  
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !
   ! Storage in the LES configuration
-  !
+  
   IF (LLES_CALL) THEN
     CALL SECOND_MNH(ZTIME1)
     CALL LES_MEAN_SUBGRID(MZF(ZFLXZ, KKA, KKU, KKL), X_LES_SUBGRID_WSv(:,:,:,JSV) )
     CALL LES_MEAN_SUBGRID(GZ_W_M(PWM,PDZZ, KKA, KKU, KKL)*MZF(ZFLXZ, KKA, KKU, KKL), &
                           X_LES_RES_ddxa_W_SBG_UaSv(:,:,:,JSV) )
-    CALL LES_MEAN_SUBGRID(MZF(GZ_M_W(KKA, KKU, KKL,PSVM(:,:,:,JSV),PDZZ)*ZFLXZ, KKA, KKU, KKL), &
+    CALL LES_MEAN_SUBGRID(MZF(GZ_M_W(PSVM(:,:,:,JSV),PDZZ, KKA, KKU, KKL)*ZFLXZ, KKA, KKU, KKL), &
                           X_LES_RES_ddxa_Sv_SBG_UaSv(:,:,:,JSV) )
     CALL LES_MEAN_SUBGRID(-ZCSVP*SQRT(PTKEM)/PLM*MZF(ZFLXZ, KKA, KKU, KKL), X_LES_SUBGRID_SvPz(:,:,:,JSV) )
     CALL LES_MEAN_SUBGRID(MZF(PWM*ZFLXZ, KKA, KKU, KKL), X_LES_RES_W_SBG_WSv(:,:,:,JSV) )
@@ -443,4 +423,3 @@ END DO   ! end of scalar loop
 !
 IF (LHOOK) CALL DR_HOOK('TURB_VER_SV_FLUX',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_SV_FLUX
-END MODULE MODE_TURB_VER_SV_FLUX
diff --git a/src/common/turb/mode_turb_ver_thermo_corr.F90 b/src/arome/turb/turb_ver_thermo_corr.F90
similarity index 93%
rename from src/common/turb/mode_turb_ver_thermo_corr.F90
rename to src/arome/turb/turb_ver_thermo_corr.F90
index add00cbc3..1e343bb27 100644
--- a/src/common/turb/mode_turb_ver_thermo_corr.F90
+++ b/src/arome/turb/turb_ver_thermo_corr.F90
@@ -1,14 +1,8 @@
-!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 MODE_TURB_VER_THERMO_CORR
-IMPLICIT NONE
-CONTAINS      
-SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
-                      OTURB_FLX,HTURBDIM,HTOM,                      &
+!     ######spl
+      SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
+                      OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                       PIMPL,PEXPL,                                  &
-                      TPFILE,                                       &
+                      HFMFILE,HLUOUT,                               &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,           &
                       PRHODJ,PTHVREF,                               &
                       PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -19,7 +13,11 @@ SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
                       PRED2R3, PRED2THR3, PBLL_O_E, PETHETA,        &
                       PEMOIST, PREDTH1, PREDR1, PPHI3, PPSI3, PD,   &
                       PFWTH,PFWR,PFTH2,PFR2,PFTHR,                  &
-                      PTHLP,PRP,MFMOIST,PSIGS                       )
+                      PTHLP,PRP,MFMOIST,PSIGS                  )
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+      USE MODD_CTURB, ONLY : LHARAT
+
 !     ###############################################################
 !
 !
@@ -117,6 +115,12 @@ SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
 !!      DXF,DYF,DZF,DZM
 !!                             :  Shuman functions (difference operators)     
 !!                               
+!!      SUBROUTINE TRIDIAG     : to compute the splitted implicit evolution
+!!                               of a variable located at a mass point
+!!
+!!      SUBROUTINE TRIDIAG_WIND: to compute the splitted implicit evolution
+!!                               of a variable located at a wind point
+!!
 !!      FUNCTIONs ETHETA and EMOIST  :  
 !!            allows to compute:
 !!            - the coefficients for the turbulent correlation between
@@ -143,7 +147,7 @@ SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
 !!
 !!      Module MODD_PARAMETERS
 !!
-!!           JPVEXT_TURB     : number of vertical external points
+!!           JPVEXT     : number of vertical external points
 !!           JPHEXT     : number of horizontal external points
 !!
 !!
@@ -195,19 +199,14 @@ SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
 !!                                              change of YCOMMENT
 !!                     2012-02 (Y. Seity) add possibility to run with reversed 
 !!                                              vertical levels
-!!      Modifications  July 2015 (Wim de Rooy) LHARAT switch
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!      Modifications  July 2015 (Wim de Rooy) LHARATU switch
 !!--------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 USE MODD_CST
 USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_CONF
 USE MODD_LES
@@ -217,13 +216,14 @@ USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
 USE MODI_SHUMAN , ONLY : DZM, MZM, MZF
+USE MODI_TRIDIAG 
+USE MODE_FMWRIT
 USE MODI_LES_MEAN_SUBGRID
+USE MODI_PRANDTL
+USE MODI_TRIDIAG_THERMO
 !
-USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_PRANDTL
 !
-USE MODI_SECOND_MNH
-!
 IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
@@ -236,13 +236,18 @@ INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -
 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)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
 LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
-CHARACTER(len=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
-CHARACTER(len=4),       INTENT(IN)   ::  HTOM         ! type of Third Order Moment
+CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
-TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDZZ, PDXX, PDYY, PDZX, PDZY
                                                       ! Metric coefficients
@@ -344,7 +349,7 @@ LOGICAL :: GFWTH    ! flag to use w'2th'
 LOGICAL :: GFR2     ! flag to use w'r'2
 LOGICAL :: GFWR     ! flag to use w'2r'
 LOGICAL :: GFTHR    ! flag to use w'th'r'
-TYPE(TFIELDDATA) :: TZFIELD
+
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
@@ -508,18 +513,12 @@ ENDIF
   !
   !
   ! stores <THl THl>  
-  IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
-    TZFIELD%CMNHNAME   = 'THL_VVAR'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'THL_VVAR'
-    TZFIELD%CUNITS     = 'K2'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_THL_VVAR'
-    TZFIELD%NGRID      = 1
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+  IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
+    YRECFM  ='THL_VVAR'
+    YCOMMENT='X_Y_Z_THL_VVAR (KELVIN**2)'
+    IGRID   = 1
+    ILENCH=LEN(YCOMMENT)
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 !
 ! and we store in LES configuration
@@ -675,18 +674,12 @@ ENDIF
                      2. * PATHETA(:,:,:) * PAMOIST(:,:,:) * ZFLXZ(:,:,:)
     END IF
     ! stores <THl Rnp>   
-    IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
-      TZFIELD%CMNHNAME   = 'THLRCONS_VCOR'
-      TZFIELD%CSTDNAME   = ''
-      TZFIELD%CLONGNAME  = 'THLRCONS_VCOR'
-      TZFIELD%CUNITS     = 'K kg kg-1'
-      TZFIELD%CDIR       = 'XY'
-      TZFIELD%CCOMMENT   = 'X_Y_Z_THLRCONS_VCOR'
-      TZFIELD%NGRID      = 1
-      TZFIELD%NTYPE      = TYPEREAL
-      TZFIELD%NDIMS      = 3
-      TZFIELD%LTIMEDEP   = .TRUE.
-      CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+    IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
+      YRECFM  ='THLRCONS_VCOR'
+      YCOMMENT='X_Y_Z_THLRCONS_VCOR (KELVIN*KG/KG)'
+      IGRID   = 1
+      ILENCH=LEN(YCOMMENT)
+      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
 !
 ! and we store in LES configuration
@@ -808,18 +801,12 @@ ENDIF
       PSIGS(:,:,:) = PSIGS(:,:,:) + PAMOIST(:,:,:) **2 * ZFLXZ(:,:,:)
     END IF
     ! stores <Rnp Rnp>    
-    IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
-      TZFIELD%CMNHNAME   = 'RTOT_VVAR'
-      TZFIELD%CSTDNAME   = ''
-      TZFIELD%CLONGNAME  = 'RTOT_VVAR'
-      TZFIELD%CUNITS     = 'kg2 kg-2'
-      TZFIELD%CDIR       = 'XY'
-      TZFIELD%CCOMMENT   = 'X_Y_Z_RTOT_VVAR'
-      TZFIELD%NGRID      = 1
-      TZFIELD%NTYPE      = TYPEREAL
-      TZFIELD%NDIMS      = 3
-      TZFIELD%LTIMEDEP   = .TRUE.
-      CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+    IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
+      YRECFM  ='RTOT_VVAR'
+      YCOMMENT='X_Y_Z_RTOT_VVAR (KG/KG **2)'
+      IGRID   = 1
+      ILENCH=LEN(YCOMMENT)
+      CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
     END IF
     !
     ! and we store in LES configuration
@@ -855,4 +842,3 @@ ENDIF
 !----------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('TURB_VER_THERMO_CORR',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_THERMO_CORR
-END MODULE MODE_TURB_VER_THERMO_CORR
diff --git a/src/common/turb/mode_turb_ver_thermo_flux.F90 b/src/arome/turb/turb_ver_thermo_flux.F90
similarity index 65%
rename from src/common/turb/mode_turb_ver_thermo_flux.F90
rename to src/arome/turb/turb_ver_thermo_flux.F90
index ce4391f43..d377e2c9d 100644
--- a/src/common/turb/mode_turb_ver_thermo_flux.F90
+++ b/src/arome/turb/turb_ver_thermo_flux.F90
@@ -1,16 +1,9 @@
-!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 MODE_TURB_VER_THERMO_FLUX
-IMPLICIT NONE
-CONTAINS
-      
-SUBROUTINE TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
-                      OTURB_FLX,HTURBDIM,HTOM,                      &
+!     ######spl
+      SUBROUTINE TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
+                      OCLOSE_OUT,OTURB_FLX,HTURBDIM,HTOM,           &
                       PIMPL,PEXPL,                                  &
                       PTSTEP,                                       &
-                      TPFILE,                                       &
+                      HFMFILE,HLUOUT,                               &
                       PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,PZZ,       &
                       PRHODJ,PTHVREF,                               &
                       PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
@@ -21,7 +14,10 @@ SUBROUTINE TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
                       PRED2R3, PRED2THR3, PBLL_O_E, PETHETA,        &
                       PEMOIST, PREDTH1, PREDR1, PPHI3, PPSI3, PD,   &
                       PFWTH,PFWR,PFTH2,PFR2,PFTHR,MFMOIST,PBL_DEPTH,&
-                      PWTHV,PRTHLS,PRRS,PTHLP,PRP,PTP,PWTH,PWRC     )
+                      PWTHV,PRTHLS,PRRS,PTHLP,PRP,PTP,PWTH,PWRC)
+      USE PARKIND1, ONLY : JPRB
+      USE YOMHOOK , ONLY : LHOOK, DR_HOOK
+      USE MODD_CTURB, ONLY : LHARAT
 !     ###############################################################
 !
 !
@@ -119,10 +115,10 @@ SUBROUTINE TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
 !!      DXF,DYF,DZF,DZM
 !!                             :  Shuman functions (difference operators)     
 !!                               
-!!      SUBROUTINE TRIDIAG     : to compute the split implicit evolution
+!!      SUBROUTINE TRIDIAG     : to compute the splitted implicit evolution
 !!                               of a variable located at a mass point
 !!
-!!      SUBROUTINE TRIDIAG_WIND: to compute the split implicit evolution
+!!      SUBROUTINE TRIDIAG_WIND: to compute the splitted implicit evolution
 !!                               of a variable located at a wind point
 !!
 !!      FUNCTIONs ETHETA and EMOIST  :  
@@ -210,58 +206,31 @@ SUBROUTINE TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,    &
 !!                     2012-02 (Y. Seity) add possibility to run with reversed
 !!                                             vertical levels
 !!      Modifications  July 2015 (Wim de Rooy) LHARAT switch
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!                     2021 (D. Ricard) last version of HGRAD turbulence scheme
-!!                                 Leronard terms instead of Reynolds terms
-!!                                 applied to vertical fluxes of r_np and Thl
-!!                                 for implicit version of turbulence scheme
-!!                                 corrections and cleaning
-!!                     June 2020 (B. Vie) Patch preventing negative rc and ri in 2.3 and 3.3
-!! JL Redelsperger  : 03/2021: Ocean and Autocoupling O-A LES Cases
-!!                             Sfc flux shape for LDEEPOC Case
 !!--------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CST
-USE MODD_CONF, ONLY: CPROGRAM
 USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_GRID_n,         ONLY: XZS, XXHAT, XYHAT
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_METRICS_n,      ONLY: XDXX, XDYY, XDZX, XDZY, XDZZ
 USE MODD_PARAMETERS
-USE MODD_TURB_n,         ONLY: LHGRAD, XCOEFHGRADTHL, XCOEFHGRADRM, XALTHGRAD, XCLDTHOLD
 USE MODD_CONF
 USE MODD_LES
-USE MODD_DIM_n
-USE MODD_DYN_n,          ONLY: LOCEAN
-USE MODD_OCEANH
-USE MODD_REF,            ONLY: LCOUPLES
-USE MODD_TURB_n
-USE MODD_FRC
 !
 USE MODI_GRADIENT_U
 USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
-USE MODI_SHUMAN , ONLY : DZF, DZM, MZF, MZM, MYF, MXF
-USE MODE_TRIDIAG, ONLY: TRIDIAG
+USE MODI_SHUMAN , ONLY : DZF, DZM, MZF, MZM
+USE MODI_TRIDIAG 
+USE MODE_FMWRIT
 USE MODI_LES_MEAN_SUBGRID
-USE MODE_TRIDIAG_THERMO, ONLY: TRIDIAG_THERMO
-USE MODE_TM06_H, ONLY: TM06_H
+USE MODI_PRANDTL
+USE MODI_TRIDIAG_THERMO
+USE MODI_TM06_H
 !
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
 USE MODE_PRANDTL
 !
-USE MODI_SECOND_MNH
-USE MODE_ll
-USE MODE_GATHER_ll
-!
 IMPLICIT NONE
 !
 !*      0.1  declarations of arguments
@@ -274,14 +243,19 @@ INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -
 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)   ::  OCLOSE_OUT   ! switch for syncronous
+                                                      ! file opening       
 LOGICAL,                INTENT(IN)   ::  OTURB_FLX    ! switch to write the
                                  ! turbulent fluxes in the syncronous FM-file
-CHARACTER(len=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+CHARACTER*4,            INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
-CHARACTER(len=4),       INTENT(IN)   ::  HTOM         ! type of Third Order Moment
+CHARACTER*4,            INTENT(IN)   ::  HTOM         ! type of Third Order Moment
 REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
 REAL,                   INTENT(IN)   ::  PTSTEP       ! Double Time Step
-TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
+CHARACTER(LEN=*),       INTENT(IN)   ::  HFMFILE      ! Name of the output
+                                                      ! FM-file 
+CHARACTER(LEN=*),       INTENT(IN)   ::  HLUOUT       ! Output-listing name for
+                                                      ! model n
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDZZ, PDXX, PDYY, PDZX, PDZY
                                                       ! Metric coefficients
@@ -347,7 +321,7 @@ REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS       ! cumulated source for rt
 REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PTHLP      ! guess of thl at t+ deltat
 REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRP        ! guess of r at t+ deltat
 !
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PTP       ! Dynamic and thermal
+REAL, DIMENSION(:,:,:),   INTENT(INOUT)::  PTP       ! Dynamic and thermal
                                                      ! TKE production terms
 !
 REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PWTH       ! heat flux
@@ -365,43 +339,19 @@ REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ::  &
        ZF,       & ! Flux in dTh/dt =-dF/dz (evaluated at t-1)(or rt instead of Th)
        ZDFDDTDZ, & ! dF/d(dTh/dz)
        ZDFDDRDZ, & ! dF/d(dr/dz)
-       Z3RDMOMENT,&  ! 3 order term in flux or variance equation
-       ZF_LEONARD,&  ! Leonard terms
-       ZRWTHL,    &
-       ZRWRNP,    &
-       ZCLD_THOLD
-!
-REAL,DIMENSION(SIZE(XZS,1),SIZE(XZS,2),KKU)  :: ZALT
-!
+       Z3RDMOMENT  ! 3 order term in flux or variance equation
+INTEGER             :: IRESP        ! Return code of FM routines 
+INTEGER             :: IGRID        ! C-grid indicator in LFIFM file 
+INTEGER             :: ILENCH       ! Length of comment string in LFIFM file
 INTEGER             :: IKB,IKE      ! I index values for the Beginning and End
                                     ! mass points of the domain in the 3 direct.
 INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain 
-INTEGER             :: JI, JJ ! loop indexes 
-!
-INTEGER                    :: IIB,IJB       ! Lower bounds of the physical
-                                            ! sub-domain in x and y directions
-INTEGER                    :: IIE,IJE       ! Upper bounds of the physical
-                                            ! sub-domain in x and y directions
-!
-REAL, DIMENSION(:), ALLOCATABLE   :: ZXHAT_ll    !  Position x in the conformal
-                                                 ! plane (array on the complete domain)
-REAL, DIMENSION(:), ALLOCATABLE   :: ZYHAT_ll    !   Position y in the conformal
-                                                 ! plane (array on the complete domain)
-!
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=16)  :: YRECFM       ! Name of the desired field in LFIFM file
 !
 REAL :: ZTIME1, ZTIME2
-REAL :: ZDELTAX
-REAL :: ZXBEG,ZXEND,ZYBEG,ZYEND ! Forcing size for ocean deep convection
-REAL, DIMENSION(SIZE(XXHAT),SIZE(XYHAT)) :: ZDIST ! distance
-                                   ! from the center of the cooling               
-REAL :: ZFLPROV
-INTEGER           :: JKM          ! vertical index loop
-INTEGER           :: JSW
-REAL :: ZSWA     ! index for time flux interpolation
-!
-INTEGER :: IIU, IJU
-INTEGER :: IRESP
+!
 INTEGER :: JK
 LOGICAL :: GUSERV   ! flag to use water
 LOGICAL :: GFTH2    ! flag to use w'th'2
@@ -409,7 +359,6 @@ LOGICAL :: GFWTH    ! flag to use w'2th'
 LOGICAL :: GFR2     ! flag to use w'r'2
 LOGICAL :: GFWR     ! flag to use w'2r'
 LOGICAL :: GFTHR    ! flag to use w'th'r'
-TYPE(TFIELDDATA) :: TZFIELD
 !----------------------------------------------------------------------------
 !
 !*       1.   PRELIMINARIES
@@ -417,38 +366,6 @@ TYPE(TFIELDDATA) :: TZFIELD
 !
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 IF (LHOOK) CALL DR_HOOK('TURB_VER_THERMO_FLUX',0,ZHOOK_HANDLE)
-!
-! Size for a given proc & a given model      
-IIU=SIZE(PTHLM,1) 
-IJU=SIZE(PTHLM,2)
-!
-!! Compute Shape of sfc flux for Oceanic Deep Conv Case
-! 
-IF (LOCEAN .AND. LDEEPOC) THEN
-  !*       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)
-  CALL GET_INDICE_ll(IIB,IJB,IIE,IJE,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.) XSSTFL(JI,JJ)=0.
-    END DO
-  END DO
-END IF !END DEEP OCEAN CONV CASE
-!
 IKT  =SIZE(PTHLM,3)  
 IKTE =IKT-JPVEXT_TURB  
 IKTB =1+JPVEXT_TURB               
@@ -462,22 +379,11 @@ GUSERV = (KRR/=0)
 !
 IF (LHARAT) THEN
 ! LHARAT so TKE and length scales at half levels!
-  ZKEFF(:,:,:) =  PLM(:,:,:) * SQRT(PTKEM(:,:,:)) +50.*MFMOIST(:,:,:)
+ZKEFF(:,:,:) =  PLM(:,:,:) * SQRT(PTKEM(:,:,:)) +50.*MFMOIST(:,:,:)
 ELSE
-  ZKEFF(:,:,:) = MZM(PLM(:,:,:) * SQRT(PTKEM(:,:,:)), KKA, KKU, KKL)
+ZKEFF(:,:,:) = MZM(PLM(:,:,:) * SQRT(PTKEM(:,:,:)), KKA, KKU, KKL)
 ENDIF
 !
-! Define a cloud mask with ri and rc (used after with a threshold) for Leonard terms
-!
-IF(LHGRAD) THEN
-  IF ( KRRL >= 1 ) THEN
-    IF ( KRRI >= 1 ) THEN
-      ZCLD_THOLD(:,:,:) = PRM(:,:,:,2) + PRM(:,:,:,4)
-    ELSE
-      ZCLD_THOLD(:,:,:) = PRM(:,:,:,2)
-    END IF
-  END IF
-END IF
 !
 ! Flags for 3rd order quantities
 !
@@ -505,22 +411,12 @@ END IF
 ! Compute the turbulent flux F and F' at time t-dt.
 !
 IF (LHARAT) THEN
-  ZF      (:,:,:) = -ZKEFF*DZM(PTHLM, KKA, KKU, KKL)/PDZZ
-  ZDFDDTDZ(:,:,:) = -ZKEFF
+ZF      (:,:,:) = -ZKEFF*DZM(PTHLM, KKA, KKU, KKL)/PDZZ
+ZDFDDTDZ(:,:,:) = -ZKEFF
 ELSE
-  ZF      (:,:,:) = -XCSHF*PPHI3*ZKEFF*DZM(PTHLM, KKA, KKU, KKL)/PDZZ
-  ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF*D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV)
-END IF
-!
-IF (LHGRAD) THEN
- ! Compute the Leonard terms for thl
- ZDELTAX= XXHAT(3) - XXHAT(2)
- ZF_LEONARD (:,:,:)= XCOEFHGRADTHL*ZDELTAX*ZDELTAX/12.0*(      &
-                 MXF(GX_W_UW(PWM(:,:,:), XDXX,XDZZ,XDZX,KKA,KKU,KKL))&
-                *MZM(GX_M_M(PTHLM(:,:,:),XDXX,XDZZ,XDZX,KKA, KKU, KKL), KKA, KKU, KKL)  &
-              +  MYF(GY_W_VW(PWM(:,:,:), XDYY,XDZZ,XDZY,KKA,KKU,KKL))  &
-                *MZM(GY_M_M(PTHLM(:,:,:),XDYY,XDZZ,XDZY,KKA, KKU, KKL), KKA, KKU, KKL) )
-END IF
+ZF      (:,:,:) = -XCSHF*PPHI3*ZKEFF*DZM(PTHLM, KKA, KKU, KKL)/PDZZ
+ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF*D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2THR3,HTURBDIM,GUSERV)
+ENDIF
 !
 ! Effect of 3rd order terms in temperature flux (at flux point)
 !
@@ -544,7 +440,7 @@ END IF
 !
 ! d(w'2r')/dz
 IF (GFWR) THEN
-  ZF       = ZF       + M3_WTH_W2R(KKA,KKU,KKL,PD,ZKEFF,&
+  ZF       = ZF       + M3_WTH_W2R(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,&
     & PTKEM,PBLL_O_E,PEMOIST,PDTH_DZ) * PFWR
   ZDFDDTDZ = ZDFDDTDZ + D_M3_WTH_W2R_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,&
     & PD,ZKEFF,PTKEM,PBLL_O_E,PEMOIST) * PFWR
@@ -552,7 +448,7 @@ END IF
 !
 ! d(w'r'2)/dz
 IF (GFR2) THEN
-  ZF       = ZF       + M3_WTH_WR2(KKA,KKU,KKL,PD,ZKEFF,PTKEM,&
+  ZF       = ZF       + M3_WTH_WR2(KKA,KKU,KKL,PREDTH1,PREDR1,PD,ZKEFF,PTKEM,&
     & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST,PDTH_DZ) * MZM(PFR2, KKA, KKU, KKL)
   ZDFDDTDZ = ZDFDDTDZ + D_M3_WTH_WR2_O_DDTDZ(KKA,KKU,KKL,PREDTH1,PREDR1,PD,&
     & ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PEMOIST) * MZM(PFR2, KKA, KKU, KKL)
@@ -567,149 +463,84 @@ IF (GFTHR) THEN
   ZDFDDTDZ = ZDFDDTDZ + D_M3_WTH_WTHR_O_DDTDZ(Z3RDMOMENT,PREDTH1,&
     & PREDR1,PD,PBLL_O_E,PETHETA) * MZM(PFTHR, KKA, KKU, KKL)
 END IF
-! compute interface flux
-IF (LCOUPLES) THEN   ! Autocoupling O-A LES
-  IF (LOCEAN) THEN    ! ocean model in coupled case 
-    ZF(:,:,IKE) =  (XSSTFL_C(:,:,1)+XSSRFL_C(:,:,1)) &
-                  *0.5* ( 1. + PRHODJ(:,:,KKU)/PRHODJ(:,:,IKE) )
-  ELSE                ! atmosph model in coupled case
-    ZF(:,:,IKB) =  XSSTFL_C(:,:,1) &
-                  *0.5* ( 1. + PRHODJ(:,:,KKA)/PRHODJ(:,:,IKB) )
-  ENDIF 
-!
-ELSE  ! No coupling O and A cases
-  ! atmosp bottom
-  !*In 3D, a part of the flux goes vertically,
-  ! and another goes horizontally (in presence of slopes)
-  !*In 1D, part of energy released in horizontal flux is taken into account in the vertical part
-  IF (HTURBDIM=='3DIM') THEN
-    ZF(:,:,IKB) = ( PIMPL*PSFTHP(:,:) + PEXPL*PSFTHM(:,:) )   &
-                       * PDIRCOSZW(:,:)                       &
-                       * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
-  ELSE
-    ZF(:,:,IKB) = ( PIMPL*PSFTHP(:,:) + PEXPL*PSFTHM(:,:) )   &
-                       / PDIRCOSZW(:,:)                       &
-                       * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
-  END IF
 !
-  IF (LOCEAN) THEN
-    ZF(:,:,IKE) = XSSTFL(:,:) *0.5*(1. + PRHODJ(:,:,KKU) / PRHODJ(:,:,IKE))
-  ELSE !end ocean case (in nocoupled case)
-    ! atmos top
-#ifdef REPRO48
-#else
-      ZF(:,:,IKE)=0.
-#endif
-  END IF
-END IF !end no coupled cases
+!* in 3DIM case, a part of the flux goes vertically, and another goes horizontally
+! (in presence of slopes)
+!* in 1DIM case, the part of energy released in horizontal flux
+! is taken into account in the vertical part
+!
+IF (HTURBDIM=='3DIM') THEN
+  ZF(:,:,IKB) = ( PIMPL*PSFTHP(:,:) + PEXPL*PSFTHM(:,:) )   &
+                     * PDIRCOSZW(:,:)                       &
+                     * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
+ELSE
+  ZF(:,:,IKB) = ( PIMPL*PSFTHP(:,:) + PEXPL*PSFTHM(:,:) )   &
+                     / PDIRCOSZW(:,:)                       &
+                     * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
+END IF
 !
-! Compute the split conservative potential temperature at t+deltat
+! Compute the splitted conservative potential temperature at t+deltat
 CALL TRIDIAG_THERMO(KKA,KKU,KKL,PTHLM,ZF,ZDFDDTDZ,PTSTEP,PIMPL,PDZZ,&
                     PRHODJ,PTHLP)
 !
 ! Compute the equivalent tendency for the conservative potential temperature
-!
-ZRWTHL(:,:,:)= PRHODJ(:,:,:)*(PTHLP(:,:,:)-PTHLM(:,:,:))/PTSTEP
-! replace the flux by the Leonard terms above ZALT and ZCLD_THOLD
-IF (LHGRAD) THEN
- DO JK=1,KKU
-  ZALT(:,:,JK) = PZZ(:,:,JK)-XZS(:,:)
- END DO
- WHERE ( (ZCLD_THOLD(:,:,:) >= XCLDTHOLD) .AND. ( ZALT(:,:,:) >= XALTHGRAD) )
-  ZRWTHL(:,:,:) = -GZ_W_M(MZM(PRHODJ(:,:,:), KKA, KKU, KKL)*ZF_LEONARD(:,:,:),XDZZ,&
-                   KKA, KKU, KKL)
- END WHERE
-END IF
-!
-PRTHLS(:,:,:)= PRTHLS(:,:,:)  + ZRWTHL(:,:,:)
+PRTHLS(:,:,:)= PRTHLS(:,:,:)  +    &
+               PRHODJ(:,:,:)*(PTHLP(:,:,:)-PTHLM(:,:,:))/PTSTEP
 !
 !*       2.2  Partial Thermal Production
 !
 !  Conservative potential temperature flux : 
 !
 ZFLXZ(:,:,:)   = ZF                                                &
-               + PIMPL * ZDFDDTDZ * DZM(PTHLP - PTHLM, KKA, KKU, KKL) / PDZZ
-! replace the flux by the Leonard terms
-IF (LHGRAD) THEN
- WHERE ( (ZCLD_THOLD(:,:,:) >= XCLDTHOLD) .AND. ( ZALT(:,:,:) >= XALTHGRAD) )
-  ZFLXZ(:,:,:) = ZF_LEONARD(:,:,:)
- END WHERE
-END IF
+               + PIMPL * ZDFDDTDZ * DZM(PTHLP - PTHLM, KKA, KKU, KKL) / PDZZ 
 !
 ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) 
-IF (LOCEAN) THEN
-  ZFLXZ(:,:,KKU) = ZFLXZ(:,:,IKE)
-END IF
 !  
-DO JK=IKTB+1,IKTE-1
-  PWTH(:,:,JK)=0.5*(ZFLXZ(:,:,JK)+ZFLXZ(:,:,JK+KKL))
-END DO
-!
-PWTH(:,:,IKB)=0.5*(ZFLXZ(:,:,IKB)+ZFLXZ(:,:,IKB+KKL)) 
-!
-IF (LOCEAN) THEN
-  PWTH(:,:,IKE)=0.5*(ZFLXZ(:,:,IKE)+ZFLXZ(:,:,IKE+KKL))
-  PWTH(:,:,KKA)=0. 
-  PWTH(:,:,KKU)=ZFLXZ(:,:,KKU)
-ELSE
+  DO JK=IKTB+1,IKTE-1
+   PWTH(:,:,JK)=0.5*(ZFLXZ(:,:,JK)+ZFLXZ(:,:,JK+KKL))
+  END DO
+  PWTH(:,:,IKB)=0.5*(ZFLXZ(:,:,IKB)+ZFLXZ(:,:,IKB+KKL))
   PWTH(:,:,KKA)=0.5*(ZFLXZ(:,:,KKA)+ZFLXZ(:,:,KKA+KKL))
   PWTH(:,:,IKE)=PWTH(:,:,IKE-KKL)
-END IF
-!
-IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+
+IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
   ! stores the conservative potential temperature vertical flux
-  TZFIELD%CMNHNAME   = 'THW_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'THW_FLX'
-  TZFIELD%CUNITS     = 'K m s-1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'Conservative potential temperature vertical flux'
-  TZFIELD%NGRID      = 4
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+  YRECFM  ='THW_FLX'
+  YCOMMENT='X_Y_Z_THW_FLX (K*M/S)'
+  IGRID   = 4  
+  ILENCH=LEN(YCOMMENT) 
+  CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 ! Contribution of the conservative temperature flux to the buoyancy flux
-IF (LOCEAN) THEN
-  PTP(:,:,:)= XG*XALPHAOC * MZF(ZFLXZ,KKA, KKU, KKL )
+IF (KRR /= 0) THEN
+  PTP(:,:,:)  =  PBETA * MZF(MZM(PETHETA, KKA, KKU, KKL) * ZFLXZ, KKA, KKU, KKL)
+  PTP(:,:,IKB)=  PBETA(:,:,IKB) * PETHETA(:,:,IKB) *   &
+                 0.5 * ( ZFLXZ (:,:,IKB) + ZFLXZ (:,:,IKB+KKL) )  
 ELSE
-  IF (KRR /= 0) THEN
-    PTP(:,:,:)  =  PBETA * MZF( MZM(PETHETA,KKA, KKU, KKL) * ZFLXZ,KKA, KKU, KKL )
-    PTP(:,:,IKB)=  PBETA(:,:,IKB) * PETHETA(:,:,IKB) *   &
-                   0.5 * ( ZFLXZ (:,:,IKB) + ZFLXZ (:,:,IKB+KKL) )
-  ELSE
-    PTP(:,:,:)=  PBETA * MZF( ZFLXZ,KKA, KKU, KKL )
-  END IF
-END IF 
+  PTP(:,:,:)=  PBETA * MZF(ZFLXZ, KKA, KKU, KKL)
+END IF
 !
 ! Buoyancy flux at flux points
 ! 
 PWTHV = MZM(PETHETA, KKA, KKU, KKL) * ZFLXZ
 PWTHV(:,:,IKB) = PETHETA(:,:,IKB) * ZFLXZ(:,:,IKB)
 !
-IF (LOCEAN) THEN
-  ! temperature contribution to Buy flux     
-  PWTHV(:,:,IKE) = PETHETA(:,:,IKE) * ZFLXZ(:,:,IKE)
-END IF
 !*       2.3  Partial vertical divergence of the < Rc w > flux
 ! Correction for qc and qi negative in AROME 
-IF(CPROGRAM/='AROME  ') THEN
- IF ( KRRL >= 1 ) THEN
-   IF ( KRRI >= 1 ) THEN
-     PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
-                     PRHODJ*PATHETA*2.*PSRCM*DZF(ZFLXZ/PDZZ, KKA, KKU, KKL) &
-                     *(1.0-PFRAC_ICE(:,:,:))
-     PRRS(:,:,:,4) = PRRS(:,:,:,4) -                                        &
-                     PRHODJ*PATHETA*2.*PSRCM*DZF(ZFLXZ/PDZZ, KKA, KKU, KKL) &
-                     *PFRAC_ICE(:,:,:)
-   ELSE
-     PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
-                     PRHODJ*PATHETA*2.*PSRCM*DZF(ZFLXZ/PDZZ, KKA, KKU, KKL)
-   END IF
- END IF
-END IF
+!IF ( KRRL >= 1 ) THEN
+!  IF ( KRRI >= 1 ) THEN
+!    PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
+!                    DZF(MZM(PRHODJ*PATHETA*2.*PSRCM, KKA, KKU, KKL)*ZFLXZ/PDZZ, KKA, KKU, KKL)       &
+!                    *(1.0-PFRAC_ICE(:,:,:))
+!    PRRS(:,:,:,4) = PRRS(:,:,:,4) -                                        &
+!                    DZF(MZM(PRHODJ*PATHETA*2.*PSRCM, KKA, KKU, KKL)*ZFLXZ/PDZZ, KKA, KKU, KKL)       &
+!                    *PFRAC_ICE(:,:,:)
+!  ELSE
+!    PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
+!                    DZF(MZM(PRHODJ*PATHETA*2.*PSRCM, KKA, KKU, KKL)*ZFLXZ/PDZZ, KKA, KKU, KKL) 
+!  END IF
+!END IF
 !
 !*       2.4  Storage in LES configuration
 ! 
@@ -763,16 +594,6 @@ IF (KRR /= 0) THEN
   ZDFDDRDZ(:,:,:) = -XCSHF*ZKEFF*D_PSI3DRDZ_O_DDRDZ(PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,GUSERV)
  ENDIF
   !
-  ! Compute Leonard Terms for Cloud mixing ratio
-  IF (LHGRAD) THEN
-    ZDELTAX= XXHAT(3) - XXHAT(2)
-    ZF_LEONARD (:,:,:)= XCOEFHGRADRM*ZDELTAX*ZDELTAX/12.0*(        &
-                MXF(GX_W_UW(PWM(:,:,:),  XDXX,XDZZ,XDZX,KKA,KKU,KKL))       &
-                *MZM(GX_M_M(PRM(:,:,:,1),XDXX,XDZZ,XDZX,KKA,KKU,KKL),KKA,KKU,KKL) &
-                +MYF(GY_W_VW(PWM(:,:,:), XDYY,XDZZ,XDZY,KKA,KKU,KKL))        &
-                *MZM(GY_M_M(PRM(:,:,:,1),XDYY,XDZZ,XDZY,KKA,KKU,KKL),KKA,KKU,KKL) )
-   END IF
-  !
   ! Effect of 3rd order terms in temperature flux (at flux point)
   !
   ! d(w'2r')/dz
@@ -795,7 +616,7 @@ IF (KRR /= 0) THEN
   !
   ! d(w'2th')/dz
   IF (GFWTH) THEN
-    ZF       = ZF       + M3_WR_W2TH(KKA,KKU,KKL,PD,ZKEFF,&
+    ZF       = ZF       + M3_WR_W2TH(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,&
      & PTKEM,PBLL_O_E,PETHETA,PDR_DZ) * PFWTH
     ZDFDDRDZ = ZDFDDRDZ + D_M3_WR_W2TH_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,& 
      & PD,ZKEFF,PTKEM,PBLL_O_E,PETHETA) * PFWTH
@@ -803,7 +624,7 @@ IF (KRR /= 0) THEN
   !
   ! d(w'th'2)/dz
   IF (GFTH2) THEN
-    ZF       = ZF       + M3_WR_WTH2(KKA,KKU,KKL,PD,ZKEFF,PTKEM,&
+    ZF       = ZF       + M3_WR_WTH2(KKA,KKU,KKL,PREDR1,PREDTH1,PD,ZKEFF,PTKEM,&
     & PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDR_DZ) * MZM(PFTH2, KKA, KKU, KKL)
     ZDFDDRDZ = ZDFDDRDZ + D_M3_WR_WTH2_O_DDRDZ(KKA,KKU,KKL,PREDR1,PREDTH1,PD,&
      &ZKEFF,PTKEM,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA) * MZM(PFTH2, KKA, KKU, KKL)
@@ -819,64 +640,28 @@ IF (KRR /= 0) THEN
      & PREDTH1,PD,PBLL_O_E,PEMOIST) * MZM(PFTHR, KKA, KKU, KKL)
   END IF
   !
-  ! compute interface flux
-  IF (LCOUPLES) THEN   ! coupling NH O-A
-    IF (LOCEAN) THEN    ! ocean model in coupled case
-      ! evap effect on salinity to be added later !!!
-      ZF(:,:,IKE) =  0.
-    ELSE                ! atmosph model in coupled case
-      ZF(:,:,IKB) =  0.
-      ! AJOUTER FLUX EVAP SUR MODELE ATMOS
-    ENDIF
+  !* in 3DIM case, a part of the flux goes vertically, and another goes horizontally
+  ! (in presence of slopes)
+  !* in 1DIM case, the part of energy released in horizontal flux
+  ! is taken into account in the vertical part
   !
-  ELSE  ! No coupling NH OA case
-    ! atmosp bottom
-    !* in 3DIM case, a part of the flux goes vertically, and another goes horizontally
-    ! (in presence of slopes)
-    !* in 1DIM case, the part of energy released in horizontal flux
-    ! is taken into account in the vertical part
-    !
-    IF (HTURBDIM=='3DIM') THEN
-      ZF(:,:,IKB) = ( PIMPL*PSFRP(:,:) + PEXPL*PSFRM(:,:) )       &
-                           * PDIRCOSZW(:,:)                       &
-                         * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
-    ELSE
-      ZF(:,:,IKB) = ( PIMPL*PSFRP(:,:) + PEXPL*PSFRM(:,:) )     &
-                         / PDIRCOSZW(:,:)                       &
-                         * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
-    END IF
-    !
-    IF (LOCEAN) THEN
-      ! General ocean case
-      ! salinity/evap effect to be added later !!!!!
-      ZF(:,:,IKE) = 0.
-    ELSE !end ocean case (in nocoupled case)
-      ! atmos top
-#ifdef REPRO48
-#else
-      ZF(:,:,IKE)=0.
-#endif
-    END IF
-  END IF!end no coupled cases
-  ! Compute the split conservative potential temperature at t+deltat
+  IF (HTURBDIM=='3DIM') THEN
+    ZF(:,:,IKB) = ( PIMPL*PSFRP(:,:) + PEXPL*PSFRM(:,:) )       &
+                         * PDIRCOSZW(:,:)                       &
+                       * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
+  ELSE
+    ZF(:,:,IKB) = ( PIMPL*PSFRP(:,:) + PEXPL*PSFRM(:,:) )     &
+                       / PDIRCOSZW(:,:)                       &
+                       * 0.5 * (1. + PRHODJ(:,:,KKA) / PRHODJ(:,:,IKB))
+  END IF
+  !
+  ! Compute the splitted conservative potential temperature at t+deltat
   CALL TRIDIAG_THERMO(KKA,KKU,KKL,PRM(:,:,:,1),ZF,ZDFDDRDZ,PTSTEP,PIMPL,&
                       PDZZ,PRHODJ,PRP)
   !
   ! Compute the equivalent tendency for the conservative mixing ratio
-  !
-  ZRWRNP (:,:,:) = PRHODJ(:,:,:)*(PRP(:,:,:)-PRM(:,:,:,1))/PTSTEP
-  !
-  ! replace the flux by the Leonard terms above ZALT and ZCLD_THOLD
-  IF (LHGRAD) THEN
-   DO JK=1,KKU
-    ZALT(:,:,JK) = PZZ(:,:,JK)-XZS(:,:)
-   END DO
-   WHERE ( (ZCLD_THOLD(:,:,:) >= XCLDTHOLD ) .AND. ( ZALT(:,:,:) >= XALTHGRAD ) )
-    ZRWRNP (:,:,:) =  -GZ_W_M(MZM(PRHODJ(:,:,:),KKA,KKU,KKL)*ZF_LEONARD(:,:,:),XDZZ,KKA,KKU,KKL)
-   END WHERE
-  END IF
-  !
-  PRRS(:,:,:,1) = PRRS(:,:,:,1) + ZRWRNP (:,:,:)
+  PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRHODJ(:,:,:) *     &
+                  (PRP(:,:,:)-PRM(:,:,:,1))/PTSTEP
   !
   !*       3.2  Complete thermal production
   !
@@ -885,13 +670,6 @@ IF (KRR /= 0) THEN
   ZFLXZ(:,:,:)   = ZF                                                &
                  + PIMPL * ZDFDDRDZ * DZM(PRP - PRM(:,:,:,1), KKA, KKU, KKL) / PDZZ 
   !
-  ! replace the flux by the Leonard terms above ZALT and ZCLD_THOLD
-  IF (LHGRAD) THEN
-   WHERE ( (ZCLD_THOLD(:,:,:) >= XCLDTHOLD ) .AND. ( ZALT(:,:,:) >= XALTHGRAD ) )
-    ZFLXZ(:,:,:) = ZF_LEONARD(:,:,:)
-   END WHERE
-  END IF
-  !
   ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) 
   !
   DO JK=IKTB+1,IKTE-1
@@ -902,56 +680,41 @@ IF (KRR /= 0) THEN
   PWRC(:,:,IKE)=PWRC(:,:,IKE-KKL)
   !
   !
-  IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+  IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
     ! stores the conservative mixing ratio vertical flux
-    TZFIELD%CMNHNAME   = 'RCONSW_FLX'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'RCONSW_FLX'
-    TZFIELD%CUNITS     = 'kg m s-1 kg-1'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'Conservative mixing ratio vertical flux'
-    TZFIELD%NGRID      = 4
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+    YRECFM  ='RCONSW_FLX'
+    YCOMMENT='X_Y_Z_RCONSW_FLX (KG*M/S/KG)'
+    IGRID   = 4  
+    ILENCH=LEN(YCOMMENT) 
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !
   ! Contribution of the conservative water flux to the Buoyancy flux
-  IF (LOCEAN) THEN
-     ZA(:,:,:)=  -XG*XBETAOC  * MZF(ZFLXZ, KKA, KKU, KKL )
-  ELSE
-    ZA(:,:,:)   =  PBETA * MZF( MZM(PEMOIST, KKA, KKU, KKL) * ZFLXZ,KKA,KKU,KKL )
-    ZA(:,:,IKB) =  PBETA(:,:,IKB) * PEMOIST(:,:,IKB) *   &
-                   0.5 * ( ZFLXZ (:,:,IKB) + ZFLXZ (:,:,IKB+KKL) )
-    PTP(:,:,:) = PTP(:,:,:) + ZA(:,:,:)
-  END IF
+  ZA(:,:,:)   =  PBETA * MZF(MZM(PEMOIST, KKA, KKU, KKL) * ZFLXZ, KKA, KKU, KKL)
+  ZA(:,:,IKB) =  PBETA(:,:,IKB) * PEMOIST(:,:,IKB) *   &
+                 0.5 * ( ZFLXZ (:,:,IKB) + ZFLXZ (:,:,IKB+KKL) )
+  PTP(:,:,:) = PTP(:,:,:) + ZA(:,:,:)
   !
   ! Buoyancy flux at flux points
   ! 
   PWTHV          = PWTHV          + MZM(PEMOIST, KKA, KKU, KKL) * ZFLXZ
   PWTHV(:,:,IKB) = PWTHV(:,:,IKB) + PEMOIST(:,:,IKB) * ZFLXZ(:,:,IKB)
-  IF (LOCEAN) THEN
-    PWTHV(:,:,IKE) = PWTHV(:,:,IKE) + PEMOIST(:,:,IKE)* ZFLXZ(:,:,IKE)
-  END IF   
 !
 !*       3.3  Complete vertical divergence of the < Rc w > flux
 ! Correction of qc and qi negative for AROME
-IF(CPROGRAM/='AROME  ') THEN
-   IF ( KRRL >= 1 ) THEN
-     IF ( KRRI >= 1 ) THEN
-       PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
-                       PRHODJ*PAMOIST*2.*PSRCM*DZF(ZFLXZ/PDZZ,KKA,KKU,KKL )       &
-                       *(1.0-PFRAC_ICE(:,:,:))
-       PRRS(:,:,:,4) = PRRS(:,:,:,4) -                                        &
-                       PRHODJ*PAMOIST*2.*PSRCM*DZF(ZFLXZ/PDZZ,KKA,KKU,KKL )       &
-                       *PFRAC_ICE(:,:,:)
-     ELSE
-       PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
-                       PRHODJ*PAMOIST*2.*PSRCM*DZF(ZFLXZ/PDZZ,KKA,KKU,KKL )
-     END IF
-   END IF
-END IF
+!  IF ( KRRL >= 1 ) THEN
+!    IF ( KRRI >= 1 ) THEN
+!      PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
+!                      DZF(MZM(PRHODJ*PAMOIST*2.*PSRCM, KKA, KKU, KKL)*ZFLXZ/PDZZ, KKA, KKU, KKL)       &
+!                      *(1.0-PFRAC_ICE(:,:,:))
+!      PRRS(:,:,:,4) = PRRS(:,:,:,4) -                                        &
+!                      DZF(MZM(PRHODJ*PAMOIST*2.*PSRCM, KKA, KKU, KKL)*ZFLXZ/PDZZ, KKA, KKU, KKL)       &
+!                      *PFRAC_ICE(:,:,:)
+!    ELSE
+!      PRRS(:,:,:,2) = PRRS(:,:,:,2) -                                        &
+!                      DZF(MZM(PRHODJ*PAMOIST*2.*PSRCM, KKA, KKU, KKL)*ZFLXZ/PDZZ, KKA, KKU, KKL) 
+!    END IF
+!  END IF
 !
 !*       3.4  Storage in LES configuration
 ! 
@@ -980,7 +743,7 @@ END IF
 !
 !*       4.1  <w Rc>    
 !
-IF ( ((OTURB_FLX .AND. TPFILE%LOPENED) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
+IF ( ((OTURB_FLX .AND. OCLOSE_OUT) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
 !  
 ! recover the Conservative potential temperature flux : 
 ! With LHARAT is true tke and length scales at half levels
@@ -1001,18 +764,12 @@ IF ( ((OTURB_FLX .AND. TPFILE%LOPENED) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
   ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) 
   !                 
   ! store the liquid water mixing ratio vertical flux
-  IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
-    TZFIELD%CMNHNAME   = 'RCW_FLX'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'RCW_FLX'
-    TZFIELD%CUNITS     = 'kg m s-1 kg-1'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'Liquid water mixing ratio vertical flux'
-    TZFIELD%NGRID      = 4
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_Field_write(TPFILE,TZFIELD,ZFLXZ)
+  IF ( OTURB_FLX .AND. OCLOSE_OUT ) THEN
+    YRECFM  ='RCW_FLX'
+    YCOMMENT='X_Y_Z_RCW_FLX (KG*M/S/KG)'
+    IGRID   = 4  
+    ILENCH=LEN(YCOMMENT) 
+    CALL FMWRIT(HFMFILE,YRECFM,HLUOUT,'XY',ZFLXZ,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
   !  
 ! and we store in LES configuration this subgrid flux <w'rc'>
@@ -1025,11 +782,7 @@ IF ( ((OTURB_FLX .AND. TPFILE%LOPENED) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
   END IF
 !
 END IF !end of <w Rc>
-IF (LOCEAN .AND. LDEEPOC) THEN
-  DEALLOCATE(ZXHAT_ll,ZYHAT_ll)
-END IF
 !
 !----------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('TURB_VER_THERMO_FLUX',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_THERMO_FLUX
-END MODULE MODE_TURB_VER_THERMO_FLUX
diff --git a/src/common/aux/modd_blowsnow.F90 b/src/common/aux/modd_blowsnow.F90
deleted file mode 100644
index 36180eadd..000000000
--- a/src/common/aux/modd_blowsnow.F90
+++ /dev/null
@@ -1,80 +0,0 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!!     ######################
-       MODULE MODD_BLOWSNOW
-!!     ######################
-!!
-!!     PURPOSE
-!!     -------
-!!
-!!     Declaration of variables and types for the blowing snow scheme
-!!
-!!     METHOD
-!!     ------
-!!
-!!
-!!     REFERENCE
-!!     ---------
-!!     Etudes du transport de la neige par le vent en conditions alpines : 
-!!     Observations et simulations à l'aide d'un modèle couplé atmosphère/
-!!     manteau neigeux (Thèse, Uni. Paris Est, 2012)
-!!
-!!
-!!     AUTHOR
-!!     ------
-!!     Vincent Vionnet (CNRM)
-!!
-!!
-!!     MODIFICATIONS
-!!     -------------
-!!
-!!--------------------------------------------------------------------
-!!     DECLARATIONS
-!!     ------------
-IMPLICIT NONE
-
-LOGICAL      :: LBLOWSNOW  = .FALSE.   ! switch to active pronostic blowing snow
-!
-INTEGER      :: NBLOWSNOW3D = 2 ! Number of blowing snow variables
-! as scalar in Meso-NH. The curent version of the model use two scalars:
-!				- Number concentration (#/kg)
-!				- Mass concentration (kg/kg)
-
-INTEGER     :: NBLOWSNOW_2D = 3  ! Number of 2D blowing snow variables
-! adected in Meso-NH. The curent version of the model advectes three variables:
-!             - total number concentration in Canopy
-!             - total mass concentration in Canopy
-!             - equivalent concentration in the saltation layer
-!
-REAL            :: XALPHA_SNOW ! Gamma distribution shape factor
-!
-REAL            :: XRSNOW  ! Ratio between diffusion coefficient for scalar
-                           ! variables and blowing snow variables
-                           ! RSNOW = KSCA/KSNOW = 4. (if Redelsperger-Sommeria (1981) used in ini_cturb)
-                           ! RSNOW = KSCA/KSNOW = 2.5 ( if Cheng-Canuto-Howard (2002) used in ini_cturb)
-                           ! Cheng-Canuto-Howard (2002) is the default in MNH V5.3
-                           ! See Vionnet (PhD, 2012, In French) and Vionnet et al (TC, 2014)
-                           ! for a complete dicsussion
-CHARACTER(LEN=6),DIMENSION(:),ALLOCATABLE  :: CSNOWNAMES
-
-CHARACTER(LEN=6),DIMENSION(2), PARAMETER  :: YPSNOW_INI = &
-     (/'SNWM01','SNWM02'/)
-!
-CHARACTER(LEN=6),DIMENSION(3), PARAMETER  :: YPBLOWSNOW_2D = &
-     (/'SNWCNU','SNWCMA','SNWCSA' /)
-
-CHARACTER(LEN=4)  :: CSNOWSEDIM ! type of formulation for snow
-!              sedimentation : MITC : Mitchell (1996)
-!                              CARR : Carrier's drag coefficient (cf PIEKTUK)
-!                              TABC : Tabulated values from Carrier's drag coefficient
-!                              NONE : no seidmentation
-!Minimal mean radius (um) 
-REAL           :: XINIRADIUS_SNW = 5.e-6
-!Minimum allowed number concentration (#/m3)
-REAL           :: XN0MIN_SNW    =  1
-!
-!
-END MODULE MODD_BLOWSNOW
diff --git a/src/common/aux/modd_dimn.F90 b/src/common/aux/modd_dimn.F90
deleted file mode 100644
index 622541f68..000000000
--- a/src/common/aux/modd_dimn.F90
+++ /dev/null
@@ -1,87 +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 modd 2006/05/18 13:07:25
-!-----------------------------------------------------------------
-!     ##################
-      MODULE MODD_DIM_n
-!     ##################
-!
-!!****  *MODD_DIM$n* - declaration of dimensions
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this declarative module is to specify  the dimensions 
-!     of the data arrays.   
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      None 
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation of Meso-NH (module MODD_DIMn)
-!!      Technical Specifications Report of the Meso-NH (chapters 2 and 3)
-!!          
-!!    AUTHOR
-!!    ------
-!!	V. Ducrocq   *Meteo France*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    05/05/94     
-!!      Modifications 13/08/98 (V. Ducrocq) // NIINF .. NJSUP are no more used in the init part                
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_PARAMETERS, ONLY: JPMODELMAX
-IMPLICIT NONE
-
-TYPE DIM_t
-  INTEGER :: NIMAX,NJMAX,NKMAX  !  Dimensions respectively  in x , 
-                              ! y ,  z directions of the physical sub-domain.
-  INTEGER :: NIMAX_ll,NJMAX_ll  !  Dimensions respectively  in x and y
-                                   ! directions of the physical domain
-  INTEGER :: NIINF, NISUP       !  Lower bound and upper bound of the arrays 
-                                   ! in x direction 
-  INTEGER :: NJINF, NJSUP       !  Lower bound and upper bound of the arrays 
-                                   ! in y direction
-!
-END TYPE DIM_t
-
-TYPE(DIM_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: DIM_MODEL
-
-INTEGER, POINTER :: NIMAX=>NULL(),NJMAX=>NULL(),NKMAX=>NULL()
-INTEGER, POINTER :: NIMAX_ll=>NULL(),NJMAX_ll=>NULL()
-INTEGER, POINTER :: NIINF=>NULL(), NISUP=>NULL()
-INTEGER, POINTER :: NJINF=>NULL(), NJSUP=>NULL()
-
-CONTAINS
-
-SUBROUTINE DIM_GOTO_MODEL(KFROM, KTO)
-INTEGER, INTENT(IN) :: KFROM, KTO
-!
-! Save current state for allocated arrays
-!
-! Current model is set to model KTO
-NIMAX=>DIM_MODEL(KTO)%NIMAX
-NJMAX=>DIM_MODEL(KTO)%NJMAX
-NKMAX=>DIM_MODEL(KTO)%NKMAX
-NIMAX_ll=>DIM_MODEL(KTO)%NIMAX_ll
-NJMAX_ll=>DIM_MODEL(KTO)%NJMAX_ll
-NIINF=>DIM_MODEL(KTO)%NIINF
-NISUP=>DIM_MODEL(KTO)%NISUP
-NJINF=>DIM_MODEL(KTO)%NJINF
-NJSUP=>DIM_MODEL(KTO)%NJSUP
-
-END SUBROUTINE DIM_GOTO_MODEL
-
-END MODULE MODD_DIM_n
diff --git a/src/common/aux/modd_gridn.F90 b/src/common/aux/modd_gridn.F90
deleted file mode 100644
index 055d3c88f..000000000
--- a/src/common/aux/modd_gridn.F90
+++ /dev/null
@@ -1,67 +0,0 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     ##################
-      MODULE MODD_GRID_n
-!     ##################
-!
-!!****  *MODD_GRID$n* - declaration of grid variables
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this declarative module is to declare  the variables
-!     describing the grid. 
-!    
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      None 
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation of Meso-NH (module MODD_GRIDn)
-!!      Technical Specifications Report of the Meso-NH (chapters 2 and 3)
-!!
-!!    AUTHOR
-!!    ------
-!!	V. Ducrocq   *Meteo France*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    05/05/94                      
-!!      J. Stein    15/11/95  add the slope angle
-!!      V. Ducrocq   13/08/98  // : add XLATOR_ll and XLONOR_ll       
-!!      V. Masson   nov 2004  supress XLATOR,XLONOR,XLATOR_ll,XLONOR_ll
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_PARAMETERS, ONLY: JPMODELMAX
-IMPLICIT NONE
-
-REAL, DIMENSION(:,:),  POINTER :: XLON=>NULL(),XLAT=>NULL() ! Longitude and latitude  
-REAL, DIMENSION(:),    POINTER :: XXHAT=>NULL()             ! Position x in the conformal or cartesian plane
-REAL, DIMENSION(:),    POINTER :: XYHAT=>NULL()             ! Position y in the conformal or cartesian plane
-REAL, DIMENSION(:),    POINTER :: XDXHAT=>NULL()            ! horizontal stretching in x
-REAL, DIMENSION(:),    POINTER :: XDYHAT=>NULL()            ! horizontal stretching in y
-REAL, DIMENSION(:,:),  POINTER :: XMAP=>NULL()              ! Map factor 
-REAL, DIMENSION(:,:),  POINTER :: XZS=>NULL()               ! orography
-REAL, DIMENSION(:,:,:),POINTER :: XZZ=>NULL()               ! height z 
-REAL,                  POINTER :: XZTOP=>NULL()             ! model top (m)
-REAL, DIMENSION(:),    POINTER :: XZHAT=>NULL()             ! height level without orography
-REAL, DIMENSION(:,:),  POINTER :: XDIRCOSXW=>NULL(),XDIRCOSYW=>NULL(),XDIRCOSZW=>NULL() ! director cosinus of the normal
-                                                                                        ! to the ground surface
-REAL, DIMENSION(:,:),  POINTER  :: XCOSSLOPE=>NULL()         ! cosinus of the angle between i and the slope vector
-REAL, DIMENSION(:,:),  POINTER  :: XSINSLOPE=>NULL()         ! sinus   of the angle between i and the slope vector
-! Quantities for SLEVE vertical coordinate
-LOGICAL,               POINTER  :: LSLEVE=>NULL()            ! Logical for SLEVE coordinate
-REAL,                  POINTER  :: XLEN1=>NULL()             ! Decay scale for smooth topography
-REAL,                  POINTER  :: XLEN2=>NULL()             ! Decay scale for small-scale topography deviation
-REAL, DIMENSION(:,:),  POINTER  :: XZSMT=>NULL()             ! smooth orography for SLEVE coordinate
-
-END MODULE MODD_GRID_n
diff --git a/src/common/aux/modd_io.F90 b/src/common/aux/modd_io.F90
index 56ae6db2b..c111e469f 100644
--- a/src/common/aux/modd_io.F90
+++ b/src/common/aux/modd_io.F90
@@ -1,34 +1,6 @@
 MODULE MODD_IO
-USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX
-!
 IMPLICIT NONE
-!
+
 INTEGER, PARAMETER :: NVERB_NO=0, NVERB_FATAL=1, NVERB_ERROR=2, NVERB_WARNING=3, NVERB_INFO=4, NVERB_DEBUG=5
 INTEGER, SAVE :: N_ABORT_LEVEL = NVERB_ERROR
-!
-!Structure describing the characteristics of a file
-TYPE TFILEDATA
-  CHARACTER(LEN=NFILENAMELGTMAX) :: CNAME = '' !Filename
-  CHARACTER(LEN=:),ALLOCATABLE   :: CDIRNAME   !Directory name
-  CHARACTER(LEN=13) :: CTYPE   = "UNKNOWN" !Filetype (PGD, MNH, DES, NML...)
-  CHARACTER(LEN=7)  :: CFORMAT = "UNKNOWN" !Fileformat (NETCDF4, LFI, LFICDF4...)
-  CHARACTER(LEN=7)  :: CMODE   = "UNKNOWN" !Opening mode (read, write...)
-  LOGICAL           :: LOPENED = .FALSE.   !Is the file opened
-  INTEGER           :: NOPEN_CURRENT = 0   !Number of times the file is currently opened (several opens without close are allowed)
-  INTEGER           :: NOPEN   = 0         !Number of times the file has been opened (during the current execution)
-  INTEGER           :: NCLOSE  = 0         !Number of times the file has been closed (during the current execution)
-  !
-  INTEGER           :: NMASTER_RANK  = -1      !Rank of the master process (no meaning if LMULTIMASTERS=.T.)
-  INTEGER           :: NMPICOMM      = -1      !MPI communicator used for IO on this file
-  LOGICAL           :: LMASTER       = .FALSE. !True if process is master of the file (process that open/read/write/close)
-  LOGICAL           :: LMULTIMASTERS = .FALSE. !True if several processes may access the file
-  INTEGER           :: NSUBFILES_IOZ = 0       !Number of sub-files (Z-split files based on this file)
-                                               !For example if 2 sub-files and this file is abcd,
-                                               !the 2 sub-files are abcd.Z001 and abcd.Z002
-!  TYPE(TFILE_ELT),DIMENSION(:),ALLOCATABLE :: TFILES_IOZ !Corresponding Z-split files
-  !
-  INTEGER              :: NMODEL = 0              !Model number corresponding to the file (field not always set)
-  INTEGER,DIMENSION(3) :: NMNHVERSION = (/0,0,0/) !MesoNH version used to create the file
-  !
-END TYPE TFILEDATA
 ENDMODULE MODD_IO
diff --git a/src/common/aux/modd_metricsn.F90 b/src/common/aux/modd_metricsn.F90
deleted file mode 100644
index 33cec104e..000000000
--- a/src/common/aux/modd_metricsn.F90
+++ /dev/null
@@ -1,78 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!--------------- special set of characters for RCS information
-!-----------------------------------------------------------------
-! $Source$ $Revision$
-! MASDEV4_7 modd 2006/06/27 14:20:29
-!-----------------------------------------------------------------
-!     #####################
-      MODULE MODD_METRICS_n
-!     #####################
-!
-!!****  *MODD_METRICS$n* - metric coefficients
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this declarative module is to declare the 
-!     metric coefficients. 
-!    
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      None 
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!	P. Jabouille   *Meteo France*
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    05/04/99                      
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_PARAMETERS, ONLY: JPMODELMAX
-IMPLICIT NONE
-
-TYPE METRICS_t
-  REAL, DIMENSION(:,:,:), POINTER :: XDXX=>NULL(),XDZX=>NULL(), &
-                                  XDYY=>NULL(),XDZY=>NULL(),XDZZ=>NULL()
-                                            !metric coefficients
-END TYPE METRICS_t
-
-TYPE(METRICS_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: METRICS_MODEL
-
-REAL, DIMENSION(:,:,:), POINTER :: XDXX=>NULL(),XDZX=>NULL(), &
-                                  XDYY=>NULL(),XDZY=>NULL(),XDZZ=>NULL()
-
-CONTAINS
-
-SUBROUTINE METRICS_GOTO_MODEL(KFROM, KTO)
-INTEGER, INTENT(IN) :: KFROM, KTO
-!
-! Save current state for allocated arrays
-METRICS_MODEL(KFROM)%XDXX=>XDXX
-METRICS_MODEL(KFROM)%XDZX=>XDZX
-METRICS_MODEL(KFROM)%XDYY=>XDYY
-METRICS_MODEL(KFROM)%XDZY=>XDZY
-METRICS_MODEL(KFROM)%XDZZ=>XDZZ
-!
-! Current model is set to model KTO
-XDXX=>METRICS_MODEL(KTO)%XDXX
-XDZX=>METRICS_MODEL(KTO)%XDZX
-XDYY=>METRICS_MODEL(KTO)%XDYY
-XDZY=>METRICS_MODEL(KTO)%XDZY
-XDZZ=>METRICS_MODEL(KTO)%XDZZ
-
-END SUBROUTINE METRICS_GOTO_MODEL
-
-END MODULE MODD_METRICS_n
diff --git a/src/common/aux/modd_turbn.F90 b/src/common/aux/modd_turbn.F90
deleted file mode 100644
index 03cb317eb..000000000
--- a/src/common/aux/modd_turbn.F90
+++ /dev/null
@@ -1,108 +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 MODD_TURB_n
-!     ##################
-!
-!!****  *MODD_TURB$n* - declaration of turbulence scheme free parameters
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this declarative module is to declare the
-!     variables that may be set by namelist for the turbulence scheme
-!
-!!
-!!**  IMPLICIT ARGUMENTS
-!!    ------------------
-!!      None 
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation of Meso-NH (module MODD_PARAMn)
-!!          
-!!    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.M. Carriere May  15, 1995 add the subgrid condensation
-!!      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
-!!                   May   2006    Remove KEPS
-!!      C.Lac        Nov 2014      add terms of TKE production for LES diag
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!!      D. Ricard     May 2021      add the switches for Leonard terms
-!!    JL Redelsperger  03/2021   Add O-A flux for auto-coupled LES case
-!!
-!-------------------------------------------------------------------------------
-!
-!*       0.   DECLARATIONS
-!             ------------
-!
-USE MODD_PARAMETERS, ONLY: JPMODELMAX
-IMPLICIT NONE
-! 
-! 
-  REAL               :: XIMPL     ! implicitness degree for the vertical terms of 
-                                     ! the turbulence scheme
-  REAL               :: XKEMIN      ! mimimum value for the TKE                                  
-  REAL               :: XCEDIS      ! Constant for dissipation of Tke                            
-  REAL               :: XCADAP      ! Coefficient for ADAPtative mixing length
-  CHARACTER (LEN=4)  :: CTURBLEN  ! type of length used for the closure
-                                     ! 'BL89' Bougeault and Lacarrere scheme
-                                     ! 'DELT' length = ( volum) ** 1/3
-  CHARACTER (LEN=4)  :: CTURBDIM  ! dimensionality of the turbulence scheme
-                                     ! '1DIM' for purely vertical computations
-                                     ! '3DIM' for computations in the 3 
-                                     ! directions
-  LOGICAL            :: LTURB_FLX ! logical switch for the storage of all  
-                                     ! the turbulent fluxes
-  LOGICAL            :: LTURB_DIAG! logical switch for the storage of some 
-                                     ! turbulence related diagnostics
-  LOGICAL            :: LSUBG_COND! Switch for subgrid condensation 
-  LOGICAL            :: LSIGMAS   ! Switch for using Sigma_s from turbulence scheme
-  LOGICAL            :: LSIG_CONV ! Switch for computing Sigma_s due to convection
-!
-  LOGICAL            :: LRMC01    ! Switch for computing separate mixing
-!                                    ! and dissipative length in the SBL
-!                                    ! according to Redelsperger, Mahe &
-!                                    ! Carlotti 2001
-  CHARACTER(LEN=4)   :: CTOM      ! type of Third Order Moments
-                                  ! 'NONE' none
-                                  ! 'TM06' Tomas Masson 2006
-  CHARACTER(LEN=4)   :: CSUBG_AUCV ! type of subgrid rc->rr autoconv. method
-  CHARACTER(LEN=80)  :: CSUBG_AUCV_RI ! type of subgrid ri->rs autoconv. method
-  CHARACTER(LEN=80)  :: CCONDENS ! subrgrid condensation PDF
-  CHARACTER(LEN=4)   :: CLAMBDA3 ! lambda3 choice for subgrid cloud scheme
-  CHARACTER(LEN=80)  :: CSUBG_MF_PDF ! PDF to use for MF cloud autoconversions
-
-!  REAL, DIMENSION(:,:), POINTER :: XBL_DEPTH=>NULL() ! BL depth for TOMS computations
-!  REAL, DIMENSION(:,:), POINTER :: XSBL_DEPTH=>NULL()! SurfaceBL depth for RMC01 computations
-!  REAL, DIMENSION(:,:,:), POINTER :: XWTHVMF=>NULL()! Mass Flux vert. transport of buoyancy
-  REAL               :: VSIGQSAT  ! coeff applied to qsat variance contribution
-  REAL, DIMENSION(:,:,:), POINTER :: XDYP=>NULL()    ! Dynamical production of Kinetic energy
-  REAL, DIMENSION(:,:,:), POINTER :: XTHP=>NULL()    ! Thermal production of Kinetic energy
-  REAL, DIMENSION(:,:,:), POINTER :: XTR=>NULL()    ! Transport production of Kinetic energy
-  REAL, DIMENSION(:,:,:), POINTER :: XDISS=>NULL()    ! Dissipation of Kinetic energy
-  REAL, DIMENSION(:,:,:), POINTER :: XLEM=>NULL()    ! Mixing length
-  REAL, DIMENSION(:,:,:), POINTER :: XSSUFL_C=>NULL() ! O-A interface flux for u
-  REAL, DIMENSION(:,:,:), POINTER :: XSSVFL_C=>NULL() ! O-A interface flux for v
-  REAL, DIMENSION(:,:,:), POINTER :: XSSTFL_C=>NULL() ! O-A interface flux for theta
-  REAL, DIMENSION(:,:,:), POINTER :: XSSRFL_C=>NULL() ! O-A interface flux for vapor
-  LOGICAL            :: LHGRAD ! logical switch for the computation of the Leornard Terms
-  REAL               :: XCOEFHGRADTHL  ! coeff applied to thl contribution
-  REAL               :: XCOEFHGRADRM  ! coeff applied to mixing ratio contribution
-  REAL               :: XALTHGRAD  ! altitude from which to apply the Leonard terms
-  REAL               :: XCLDTHOLD  ! cloud threshold to apply the Leonard terms
-                                   ! negative value : applied everywhere
-                                   ! 0.000001 applied only inside the clouds ri+rc > 10**-6 kg/kg
-!
-END MODULE MODD_TURB_n
diff --git a/src/common/aux/tools.F90 b/src/common/aux/tools.f90
similarity index 100%
rename from src/common/aux/tools.F90
rename to src/common/aux/tools.f90
diff --git a/src/common/turb/mode_bl89.F90 b/src/common/turb/bl89.F90
similarity index 97%
rename from src/common/turb/mode_bl89.F90
rename to src/common/turb/bl89.F90
index 9208fcb6b..57056e481 100644
--- a/src/common/turb/mode_bl89.F90
+++ b/src/common/turb/bl89.F90
@@ -1,10 +1,3 @@
-!MNH_LIC Copyright 1994-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.
-MODULE MODE_BL89
-IMPLICIT NONE
-CONTAINS
 !     ######spl
       SUBROUTINE BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,PTHLM,KRR,PRM,PTKEM,PSHEAR,PLM)
       USE PARKIND1, ONLY : JPRB
@@ -355,4 +348,3 @@ END IF
 !
 IF (LHOOK) CALL DR_HOOK('BL89',1,ZHOOK_HANDLE)
 END SUBROUTINE BL89
-END MODULE MODE_BL89
diff --git a/src/common/turb/mode_emoist.F90 b/src/common/turb/emoist.F90
similarity index 97%
rename from src/common/turb/mode_emoist.F90
rename to src/common/turb/emoist.F90
index b06579b1f..f17bc3168 100644
--- a/src/common/turb/mode_emoist.F90
+++ b/src/common/turb/emoist.F90
@@ -1,10 +1,8 @@
-!MNH_LIC Copyright 1995-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!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 MODE_EMOIST
-IMPLICIT NONE
-CONTAINS
+!     ######spl
 FUNCTION EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM) RESULT(PEMOIST)
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -164,4 +162,3 @@ END IF
 !
 IF (LHOOK) CALL DR_HOOK('EMOIST',1,ZHOOK_HANDLE)
 END FUNCTION EMOIST
-END MODULE MODE_EMOIST
diff --git a/src/common/turb/mode_etheta.F90 b/src/common/turb/etheta.F90
similarity index 98%
rename from src/common/turb/mode_etheta.F90
rename to src/common/turb/etheta.F90
index 4e3e91fad..f0506bd89 100644
--- a/src/common/turb/mode_etheta.F90
+++ b/src/common/turb/etheta.F90
@@ -2,9 +2,7 @@
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
-MODULE MODE_ETHETA
-IMPLICIT NONE
-CONTAINS
+!     ######spl
 FUNCTION ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM) RESULT(PETHETA)
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -155,4 +153,3 @@ END IF
 !
 IF (LHOOK) CALL DR_HOOK('ETHETA',1,ZHOOK_HANDLE)
 END FUNCTION ETHETA
-END MODULE MODE_ETHETA
diff --git a/src/common/turb/mode_coefj.f90 b/src/common/turb/mode_coefj.f90
deleted file mode 100644
index 239b3f63c..000000000
--- a/src/common/turb/mode_coefj.f90
+++ /dev/null
@@ -1,135 +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 turb 2006/05/18 13:07:25
-!-----------------------------------------------------------------
-!################
-MODULE MODE_COEFJ
-IMPLICIT NONE
-CONTAINS
-!    #######################################################
-     FUNCTION COEFJ(PTHL,PEXNREF,PFRAC_ICE)   RESULT(PCOEFJ)
-!    #######################################################
-!
-!      PURPOSE
-!!     -------
-!      COEFJ computes the coefficient J of the documentation.
-!
-!!**   METHOD
-!!     ------                                 rvs(Tl) Lv(Tl)
-!!       The value of this coefficient is J = --------------, for rc only
-!!                                             Rv Tl THETAl
-!!
-!!           rvsw(Tl) Lv(Tl)                rvsi(Tl) Ls(Tl)
-!!       or  --------------- (1-Pfrac_ri) + --------------- Pfrac_ri, for rc+ri.
-!!            Rv Tl THETAl                   Rv Tl THETAl
-!!
-!!     EXTERNAL
-!!     --------
-!!       None.
-!!
-!!     IMPLICIT ARGUMENTS
-!!     ------------------
-!!       Module MODD_CST : contains physical constants.
-!!   
-!!     REFERENCE
-!!     ---------
-!!       Book 1 of documentation of Meso-NH
-!!       Book 2 of documentation of Meso-NH
-!!
-!!
-!!     AUTHOR
-!!     ------
-!!       Jean-Marie Carriere      * Meteo-France *
-!!
-!!     MODIFICATIONS
-!!     -------------
-!!       Original       20/03/95
-!!       J.-P. Pinty    20/02/03 add non-precipitating ice
-!!
-!! ----------------------------------------------------------------------
-!
-!*       0. DECLARATIONS
-!           ------------
-USE MODD_CST
-!
-IMPLICIT NONE
-!
-!*       0.1 declarations of arguments and result
-!
-REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PTHL     ! Temperature variable
-REAL, DIMENSION(:,:,:),  INTENT(IN)  ::   PEXNREF  ! Exner function of the 
-!                                                          reference state
-REAL, DIMENSION(:,:,:),  INTENT(IN), OPTIONAL ::   PFRAC_ICE 
-                                                   ! Fraction of ri in the 
-                                                   !   non-precipating
-                                                   !  "rc+ri" condensate
-!
-REAL,DIMENSION(SIZE(PTHL,1),SIZE(PTHL,2),SIZE(PTHL,3)):: PCOEFJ ! result
-!
-!*       0.2 declarations of local variables
-!
-REAL,DIMENSION(SIZE(PTHL,1),SIZE(PTHL,2),SIZE(PTHL,3)) ::       &
-                                          ZTL, ZL, ZES, ZRVS, ZP
-!                ZTL = Tl, ZL = Lv(Tl) or Ls(Tl), ZES = esw(Tl) or esi(Tl)
-!                ZRVS = rvsw(Tl) or rvsi(Tl), ZP = p
-!
-REAL                                 ::   ZEPS     ! = Mv/Md
-!---------------------------------------------------------------------------
-!
-!*       1. COMPUTATION OF Tl
-!           -----------------
-!
-ZTL(:,:,:) = PTHL(:,:,:) * PEXNREF(:,:,:)
-!
-!*       2. COMPUTATION OF Lv(Tl)
-!           ---------------------
-!
-ZL(:,:,:) = XLVTT + ( XCPV - XCL ) * ( ZTL(:,:,:) -XTT )
-!
-!*       3. COMPUTATION OF rvs(Tl)
-!           ----------------------
-!
-ZEPS      = XMV/XMD
-ZP(:,:,:) = (PEXNREF(:,:,:)**(XCPD/XRD))*XP00
-ZES(:,:,:)  = EXP( XALPW - XBETAW/ZTL(:,:,:) - XGAMW*ALOG(ZTL(:,:,:) ) )
-ZRVS(:,:,:) =  ZES(:,:,:) * ZEPS / ( ZP(:,:,:) - ZES(:,:,:) )             
-!
-!        4. RESULT FOR rc only
-!           ------------------
-!
-PCOEFJ(:,:,:) =    ZRVS(:,:,:)*ZL(:,:,:)/   &
-             (  XRV*ZTL(:,:,:)*PTHL(:,:,:)  )
-!
-! Add case when rc+ri
-!
-IF(PRESENT(PFRAC_ICE)) THEN
-!
-!*       5. COMPUTATION OF Ls(Tl)
-!           ---------------------
-!
-  ZL(:,:,:) = XLSTT + ( XCPV - XCI ) * ( ZTL(:,:,:) -XTT )
-!
-!*       6. COMPUTATION OF rvs(Tl)
-!           ----------------------
-!
-  ZES(:,:,:)  = EXP( XALPI - XBETAI/ZTL(:,:,:) - XGAMI*ALOG(ZTL(:,:,:) ) )
-  ZRVS(:,:,:) =  ZES(:,:,:) * ZEPS / ( ZP(:,:,:) - ZES(:,:,:) )
-!
-!        7. RESULT FOR rc and ri
-!           --------------------
-!
-  PCOEFJ(:,:,:) = (1.0 - PFRAC_ICE(:,:,:))*PCOEFJ(:,:,:)            &
-                       + PFRAC_ICE(:,:,:) *ZRVS(:,:,:)*ZL(:,:,:)/   &
-                                     (  XRV*ZTL(:,:,:)*PTHL(:,:,:)  )
-END IF
-!
-!---------------------------------------------------------------------------
-!
-END FUNCTION COEFJ
-END MODULE MODE_COEFJ
diff --git a/src/common/turb/mode_compute_entr_detr.F90 b/src/common/turb/mode_compute_entr_detr.F90
index ae7b16306..0b4ba0555 100644
--- a/src/common/turb/mode_compute_entr_detr.F90
+++ b/src/common/turb/mode_compute_entr_detr.F90
@@ -77,8 +77,8 @@ USE MODD_CST
 !
 USE MODD_PARAM_MFSHALL_n
 !
-USE MODE_TH_R_FROM_THL_RT_1D, ONLY: TH_R_FROM_THL_RT_1D 
-!
+USE MODI_TH_R_FROM_THL_RT_1D
+
 USE MODE_THERMO
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
diff --git a/src/common/turb/mode_compute_updraft.F90 b/src/common/turb/mode_compute_updraft.F90
index f806a0fb5..b8c7f64c5 100644
--- a/src/common/turb/mode_compute_updraft.F90
+++ b/src/common/turb/mode_compute_updraft.F90
@@ -71,7 +71,7 @@ USE MODD_PARAM_MFSHALL_n, ONLY: LGZ, XALP_PERT, XCMF, XPRES_UV, XFRAC_UP_MAX, &
 USE MODD_TURB_n, ONLY : CTURBLEN
 
 USE MODE_COMPUTE_ENTR_DETR, ONLY: COMPUTE_ENTR_DETR
-USE MODI_TH_R_FROM_THL_RT_1D, ONLY: TH_R_FROM_THL_RT_1D
+USE MODI_TH_R_FROM_THL_RT_1D
 USE MODI_SHUMAN_MF, ONLY: MZM_MF, MZF_MF, GZ_M_W_MF
 
 USE MODE_COMPUTE_BL89_ML, ONLY: COMPUTE_BL89_ML
diff --git a/src/common/turb/mode_compute_updraft_raha.F90 b/src/common/turb/mode_compute_updraft_raha.F90
index acf02a06f..408213740 100644
--- a/src/common/turb/mode_compute_updraft_raha.F90
+++ b/src/common/turb/mode_compute_updraft_raha.F90
@@ -62,7 +62,7 @@ CONTAINS
 USE MODD_CST
 USE MODD_PARAM_MFSHALL_n
 
-USE MODE_TH_R_FROM_THL_RT_1D, ONLY: TH_R_FROM_THL_RT_1D
+USE MODI_TH_R_FROM_THL_RT_1D
 USE MODI_SHUMAN_MF, ONLY: MZM_MF
 !
 USE PARKIND1, ONLY : JPRB
diff --git a/src/common/turb/mode_mf_turb.F90 b/src/common/turb/mode_mf_turb.F90
index 3dc558e35..86f1d2f31 100644
--- a/src/common/turb/mode_mf_turb.F90
+++ b/src/common/turb/mode_mf_turb.F90
@@ -63,7 +63,7 @@ CONTAINS
 !          ------------
 !
 USE MODI_SHUMAN_MF, ONLY: MZM_MF
-USE MODE_TRIDIAG_MASSFLUX, ONLY: TRIDIAG_MASSFLUX
+USE MODI_TRIDIAG_MASSFLUX
 !
 USE PARKIND1, ONLY : JPRB
 USE YOMHOOK , ONLY : LHOOK, DR_HOOK
diff --git a/src/common/turb/mode_rotate_wind.F90 b/src/common/turb/mode_rotate_wind.F90
deleted file mode 100644
index e117b95f8..000000000
--- a/src/common/turb/mode_rotate_wind.F90
+++ /dev/null
@@ -1,204 +0,0 @@
-!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!    #######################  
-     MODULE MODE_ROTATE_WIND
-!    #######################
-IMPLICIT NONE
-CONTAINS
-!     ###########################################################
-      SUBROUTINE ROTATE_WIND(PU,PV,PW,                          &
-                             PDIRCOSXW, PDIRCOSYW, PDIRCOSZW,   &
-                             PCOSSLOPE,PSINSLOPE,               &
-                             PDXX,PDYY,PDZZ,                    &
-                             PUSLOPE,PVSLOPE                    )
-!     ###########################################################
-!
-!
-!!****  *ROTATE_WIND* - computes the wind components along the maximum slope 
-!!               direction and its normal direction in the first mass level.
-!!
-!!    PURPOSE
-!!    -------
-!!**** 
-!        The purpose of this routine is to compute the wind component parallel 
-!     to the orography at the first mass level. The exact location where these
-!     components are computed is the point of intersection between the normal 
-!     to the orography and the first mass-level hyper-plane at PDZZ(:,:,IKB)/2 
-!        
-!!**  METHOD
-!!    ------
-!!       The values of the 3 cartesian components of the wind are determined
-!!    by a bilinear interpolation between the 4 nearest points in the first 
-!!    mass-level hyper-plane. These points are found according to the signs of 
-!!    the slopes' sinus and cosinus. For each direction of interpolation, the 
-!!    two different localizations (mass or flux grids) are used to avoid 
-!!    lateral boundary problems.  
-!!       Then, the rotation is performed for the wind components. The rotation 
-!!    angle is the angle between the x axe and the maximum slope direction 
-!!    defined by the slope vector (dZs/dx , dZs/dy).
-!!        Finally, the horizontal components are set at the marginal points 
-!!    according to cyclic boundary conditions because this is the only case
-!!    where these points can be considered.
-!!
-!!    EXTERNAL
-!!    --------
-!!       NONE
-!!
-!!    IMPLICIT ARGUMENTS 
-!!    ------------------
-!!
-!!       MODD_CONF      : L2D   switch for 2D model version
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book 1 of documentation (Chapter: Turbulence)
-!!
-!!    AUTHOR
-!!    ------
-!!      Joel Stein              * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         14/11/95
-!!      Modifications:   15/05/96, (N. wood)
-!!                                 take into account no slip conditions 
-!!                                 at the surface
-!!                       14/02/01  (V. Masson)
-!!                                 Slip condition at the surface restored
-!!
-!! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-USE MODD_PARAMETERS
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PU,PV,PW        ! cartesian components
-                                 ! of the wind
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSXW, PDIRCOSYW, PDIRCOSZW
-! Director Cosinus along x, y and z directions at surface w-point
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCOSSLOPE       ! cosinus of the angle 
-                                 ! between i and the slope vector
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE       ! sinus of the angle 
-                                 ! between i and the slope vector
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX, PDYY, PDZZ
-                                 ! Metric coefficients
-REAL, DIMENSION(:,:),   INTENT(OUT)  ::  PUSLOPE         ! wind component along 
-                                 ! the maximum slope direction
-REAL, DIMENSION(:,:),   INTENT(OUT)  ::  PVSLOPE         ! wind component along
-                                 !  the direction normal to the maximum slope one
-!
-!-------------------------------------------------------------------------------
-!
-!       0.2  declaration of local variables
-!
-INTEGER, DIMENSION(SIZE(PDIRCOSXW,1),SIZE(PDIRCOSXW,2)) :: ILOC,JLOC
-              ! shift index to find the 4 nearest points in x and y directions
-REAL,    DIMENSION(SIZE(PDIRCOSXW,1),SIZE(PDIRCOSXW,2)) :: ZCOEFF,ZCOEFM,     &
-              ! interpolation weigths for flux and mass locations
-                                                           ZUINT,ZVINT,ZWINT, &
-              ! intermediate values of the cartesian components after x interp.
-                                                           ZUFIN,ZVFIN,ZWFIN, &
-              ! final values of the cartesian components after the 2 interp.
-                                                           ZWGROUND
-              ! vertical velocity at the surface                                                            
-INTEGER     :: IIB,IIE,IJB,IJE,IKB
-              ! index values for the Beginning or the End of the physical 
-              ! domain in x,y and z directions
-INTEGER     :: IIU,IJU
-              ! arrays' sizes for i and j indices
-INTEGER     :: JI,JJ
-!      
-!----------------------------------------------------------------------------
-!
-!*      1.    PRELIMINARIES
-!             -------------
-!
-PUSLOPE=0.
-PVSLOPE=0.
-!
-IIB = 2
-IJB = 2
-IIU = SIZE(PU,1)
-IJU = SIZE(PU,2)
-IIE = IIU - 1
-IJE = IJU - 1
-IKB = 1+JPVEXT
-!
-ZWGROUND(:,:) = PW(:,:,IKB)
-!
-!*      2.    INTERPOLATE THE CARTESIAN COMPONENTS
-!             ------------------------------------
-!
-ILOC(:,:)=NINT(SIGN(1.,-PCOSSLOPE(:,:)))
-JLOC(:,:)=NINT(SIGN(1.,-PSINSLOPE(:,:)))
-!
-! interpolation in x direction
-!
-DO JJ = 1,IJU
-  DO JI = IIB,IIE 
-    ZCOEFF(JI,JJ) =                                                  &
-      (0.5*PDXX(JI,JJ,IKB) + 0.5*PDZZ(JI,JJ,IKB)*PDIRCOSXW(JI,JJ) )  & 
-      * 2. / (PDXX(JI,JJ,IKB)+PDXX(JI+1,JJ,IKB))
-    ZUINT(JI,JJ) = ZCOEFF(JI,JJ)      * PU(JI+1,JJ,IKB)  +           &
-                   (1.-ZCOEFF(JI,JJ)) * PU(JI,JJ,IKB)
-    !
-    ZCOEFM(JI,JJ) = 1. - 0.5 * PDZZ(JI,JJ,IKB) * ABS(PDIRCOSXW(JI,JJ))      & 
-                             / PDXX(JI+(ILOC(JI,JJ)+1)/2,JJ,IKB)
-    ZVINT(JI,JJ) = ZCOEFM(JI,JJ)      * PV(JI,JJ,IKB)              +        &
-                   (1.-ZCOEFM(JI,JJ)) * PV(JI+ILOC(JI,JJ),JJ,IKB)
-    !
-    ZWINT(JI,JJ) = ZCOEFM(JI,JJ)  * (PW(JI,JJ,IKB+1)+ZWGROUND(JI,JJ)) * 0.5    &
-              + (1.-ZCOEFM(JI,JJ))                                             &
-               *(PW(JI+ILOC(JI,JJ),JJ,IKB+1)+ZWGROUND(JI+ILOC(JI,JJ),JJ)) * 0.5
-  END DO
-END DO
-!
-! interpolation in y direction
-!
-DO JJ = IJB,IJE
-  DO JI = IIB,IIE
-    ZCOEFF(JI,JJ) =                                                     &
-      (0.5*PDYY(JI,JJ,IKB) + 0.5*PDZZ(JI,JJ,IKB)*PDIRCOSYW(JI,JJ) )     & 
-      * 2. / (PDYY(JI,JJ,IKB)+PDYY(JI+1,JJ,IKB))
-    ZVFIN(JI,JJ) = ZCOEFF(JI,JJ)      * ZVINT(JI,JJ+1)  +               &
-                   (1.-ZCOEFF(JI,JJ)) * ZVINT(JI,JJ)
-    !
-    ZCOEFM(JI,JJ) = 1. - 0.5 * PDZZ(JI,JJ,IKB) * ABS(PDIRCOSYW(JI,JJ))   & 
-                             / PDYY(JI,JJ+(JLOC(JI,JJ)+1)/2,IKB)
-    ZUFIN(JI,JJ) = ZCOEFM(JI,JJ)      * ZUINT(JI,JJ)                +    &
-                   (1.-ZCOEFM(JI,JJ)) * ZUINT(JI,JJ+JLOC(JI,JJ))
-    ZWFIN(JI,JJ) = ZCOEFM(JI,JJ)      * ZWINT(JI,JJ)                +    &
-                   (1.-ZCOEFM(JI,JJ)) * ZWINT(JI,JJ+JLOC(JI,JJ))
-  END DO
-END DO
-!
-!*      3.    ROTATE THE WIND
-!             ---------------
-!
-!
-DO JJ = IJB,IJE 
-  DO JI = IIB,IIE
-    PUSLOPE(JI,JJ) = PCOSSLOPE(JI,JJ) * PDIRCOSZW(JI,JJ) * ZUFIN(JI,JJ) +   &
-                     PSINSLOPE(JI,JJ) * PDIRCOSZW(JI,JJ) * ZVFIN(JI,JJ) +   &
-                            SQRT(1.-PDIRCOSZW(JI,JJ)**2) * ZWFIN(JI,JJ)
-    !              
-    PVSLOPE(JI,JJ) =-PSINSLOPE(JI,JJ)                    * ZUFIN(JI,JJ) +   &
-                     PCOSSLOPE(JI,JJ)                    * ZVFIN(JI,JJ)
-    !
-  END DO
-END DO
-!
-!
-!
-!----------------------------------------------------------------------------
-!
-END SUBROUTINE ROTATE_WIND
-END MODULE MODE_ROTATE_WIND
diff --git a/src/common/turb/mode_turb_hor.F90 b/src/common/turb/mode_turb_hor.F90
deleted file mode 100644
index 993b60a55..000000000
--- a/src/common/turb/mode_turb_hor.F90
+++ /dev/null
@@ -1,367 +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 MODE_TURB_HOR  
-IMPLICIT NONE
-CONTAINS
-             SUBROUTINE TURB_HOR(KSPLT, KRR, KRRL, KRRI, PTSTEP,            &
-                      OTURB_FLX,OSUBG_COND,                          &
-                      TPFILE,                                        &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
-                      PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
-                      PCOSSLOPE,PSINSLOPE,                           &
-                      PINV_PDXX, PINV_PDYY, PINV_PDZZ, PMZM_PRHODJ,  &
-                      PK,                                            &
-                      PRHODJ,PTHVREF,                                & 
-                      PSFTHM,PSFRM,PSFSVM,                           &
-                      PCDUEFF,PTAU11M,PTAU12M,PTAU22M,PTAU33M,       &
-                      PUM,PVM,PWM,PUSLOPEM,PVSLOPEM,PTHLM,PRM,PSVM,  &
-                      PTKEM,PLM,PLEPS,                               &
-                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE,     &
-                      PDP,PTP,PSIGS,                                 &
-                      PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS               )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to compute the non-vertical
-!     turbulent fluxes of the evolutive variables and give back the 
-!     source terms to the main program.
-!
-!!**  METHOD
-!!    ------
-!!     Complementary 3D calculations when running at high resolution;
-!!    The non-vertical turbulent fluxes are computed explicitly. The 
-!!    contributions are cumulated in PRvarS and in DP and TP of TKE
-!
-! d(rho*T) = -d(rho*u'T'/dxx) -d(-rho*u'T'*dzx/dxx/dzz)
-! / dt        / dx             /dz
-!!    
-!!
-!!      Near the bottom of the model, uncentred evaluation of vertical 
-!!    gradients are required because no field values are available under 
-!!    the level where the gradient must be evaluated. In this case, the 
-!!    gradient is computed with a second order accurate uncentred scheme 
-!!    according to:
-!!
-!!        D FF           dzz3                       (dzz3+dzz4)   
-!!        ----  = -  ----------------- FF(4)  +  ----------------- FF(3)   
-!!        D z         (dzz3+dzz4) dzz4              dzz3 dzz4 
-!!  
-!!                    dzz4 + 2 dzz3          
-!!                -  ----------------- FF(2)
-!!                    (dzz3+dzz4) dzz3
-!!
-!!      where the values are taken from:
-!!
-!!                  -----    FF(5)
-!!                    | 
-!!                    |   dzz5
-!!                    |    
-!!                  -----    FF(4)
-!!                    | 
-!!                    |   dzz4
-!!                    |    
-!!                  -----    FF(3)
-!!                    | 
-!!                    |   dzz3
-!!                    |    
-!!                  -----    FF(2)    , (D FF / DZ)
-!!                    |   dzz2 * 0.5
-!!                  -----    ground
-!!
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_CST : contains physical constants
-!!
-!!           XG         : gravity constant
-!!
-!!      Module MODD_CTURB: contains the set of constants for
-!!                        the turbulence scheme
-!!
-!!           XCMFS,XCMFB : cts for the momentum flux
-!!           XCSHF       : ct for the sensible heat flux
-!!           XCHF        : ct for the moisture flux
-!!           XCTV,XCHV   : cts for the T and moisture variances
-!!
-!!      Module MODD_PARAMETERS
-!!
-!!           JPVEXT     : number of vertical external points
-!!
-!!
-!!           
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book 2 of documentation (routine TURB_HOR)
-!!      Book 1 of documentation (Chapter: Turbulence)
-!!
-!!    AUTHOR
-!!    ------
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original       Aug 29, 1994
-!!      Modifications: Feb 14, 1995 (J.Cuxart and J.Stein) 
-!!                                  Doctorization and Optimization
-!!                     March 21, 1995 (J.M. Carriere) 
-!!                                  Introduction of cloud water
-!!                     June  14, 1995 (J. Stein) 
-!!                                  rm the ZVTPV computation + bug in the all 
-!!                                  or nothing condens. case
-!!                     June 28, 1995 (J.Cuxart)  Add the LES tools 
-!!                     Sept 19, 1995 (J. Stein) change the surface flux
-!!               computations
-!!                     Nov  13, 1995 (J. Stein) include the tangential fluxes
-!!               bug in <u'w'> at the surface
-!!                     Nov  27, 1997 (V. Saravane) spliting of the routine
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!                     Feb  20, 2003 (JP Pinty)  Add PFRAC_ICE
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CTURB
-USE MODD_IO, ONLY: TFILEDATA
-USE MODD_PARAMETERS
-USE MODD_LES
-!
-USE MODE_TURB_HOR_THERMO_FLUX, ONLY: TURB_HOR_THERMO_FLUX
-USE MODE_TURB_HOR_THERMO_CORR, ONLY: TURB_HOR_THERMO_CORR
-USE MODE_TURB_HOR_DYN_CORR, ONLY: TURB_HOR_DYN_CORR
-USE MODE_TURB_HOR_UV, ONLY: TURB_HOR_UV
-USE MODE_TURB_HOR_UW, ONLY: TURB_HOR_UW
-USE MODE_TURB_HOR_VW, ONLY: TURB_HOR_VW
-USE MODE_TURB_HOR_SV_FLUX, ONLY: TURB_HOR_SV_FLUX
-USE MODE_TURB_HOR_SV_CORR, ONLY: TURB_HOR_SV_CORR
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-INTEGER,                INTENT(IN)   :: KSPLT         ! current split index
-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.
-REAL,                   INTENT(IN)   ::  PTSTEP       !
-LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
-!                                                    condensation
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PZZ          ! vertical grid
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PDIRCOSXW, PDIRCOSYW, PDIRCOSZW
-! Director Cosinus along x, y and z directions at surface w-point
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCOSSLOPE       ! cosinus of the angle 
-                                      ! between i and the slope vector
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE       ! sinus of the angle 
-                                      ! between i and the slope vector
-
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PK           ! Turbulent diffusion doef.
-                                                     ! PK = PLM * SQRT(PTKEM)
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PINV_PDXX    ! 1./PDXX
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PINV_PDYY    ! 1./PDYY
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PINV_PDZZ    ! 1./PDZZ
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PMZM_PRHODJ  ! MZM(PRHODJ)
-
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRHODJ       ! density * grid volume
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTHVREF      ! ref. state VPT       
-!
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PSFTHM,PSFRM
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PSFSVM       ! surface fluxes
-!
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCDUEFF      ! Cd * || u || at time t
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU11M      ! <uu> in the axes linked 
-       ! to the maximum slope direction and the surface normal and the binormal 
-       ! at time t - dt
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU12M      ! <uv> in the same axes
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU22M      ! <vv> in the same axes
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU33M      ! <ww> in the same axes
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PUM,PVM,PWM,PTHLM 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PRM          ! mixing ratios at t-1,
-                              !  where PRM(:,:,:,1) = conservative mixing ratio
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PSVM         ! scalar var. at t-1
-REAL, DIMENSION(:,:),      INTENT(IN)   ::  PUSLOPEM     ! wind component along the 
-                                     ! maximum slope direction
-REAL, DIMENSION(:,:),      INTENT(IN)   ::  PVSLOPEM     ! wind component along the 
-                                     ! direction normal to the maximum slope one
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTKEM        ! TKE at time t- dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLM          ! Turb. mixing length
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLEPS        ! dissipative length
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLOCPEXNM    ! Lv(T)/Cp/Exner at time t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PATHETA      ! coefficients between 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PAMOIST      ! s and Thetal and Rnp
-
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PSRCM
-                                  ! normalized 2nd-order flux
-                                  ! s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PFRAC_ICE    ! ri fraction of rc+ri
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS, PRVS, PRWS, PRTHLS
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS,PRRS   ! var. at t+1 -split-
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PDP,PTP      ! TKE production terms
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
-                                  ! IN: Vertical part of Sigma_s at t
-                                  ! OUT: Total Sigma_s at t
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-!* Exchange coefficient is limited in order to insure numerical stability
-!
-!!
-!*       2.   < U' THETA'l >
-!*       3.   < U' R'np >
-!*       4.   < U' TPV' >
-!*       5.   < V' THETA'l >
-!*       6.   < V' R'np >
-!*       7.   < V' TPV' >
-!
-      CALL      TURB_HOR_THERMO_FLUX(KSPLT, KRR, KRRL, KRRI,         &
-                      OTURB_FLX,OSUBG_COND,                          &
-                      TPFILE,                                        &
-                      PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PDIRCOSXW,PDIRCOSYW,                           &
-                      PRHODJ,                                        &
-                      PSFTHM,PSFRM,                                  &
-                      PWM,PTHLM,PRM,                                 &
-                      PATHETA,PAMOIST,PSRCM,PFRAC_ICE,               &
-                      PRTHLS,PRRS                                    )
-!
-!
-!*       8.   TURBULENT CORRELATIONS : <THl THl>, <THl Rnp>, <Rnp Rnp>, Sigma_s
-!
-      IF (KSPLT==1)                                                  &
-      CALL      TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI,                &
-                      OTURB_FLX,OSUBG_COND,                          &
-                      TPFILE,                                        &
-                      PINV_PDXX,PINV_PDYY,                           &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PTHVREF,                                       &
-                      PWM,PTHLM,PRM,                                 &
-                      PTKEM,PLM,PLEPS,                               &
-                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,               & 
-                      PSIGS                                          )
-!
-!
-!*       9.   < U'U'>
-!*      10.   < V'V'>
-!*      11.   < W'W'>
-! 
-      CALL       TURB_HOR_DYN_CORR(KSPLT, PTSTEP,                    &
-                      OTURB_FLX,KRR,                                 &
-                      TPFILE,                                        &
-                      PK,PINV_PDZZ,                                  &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
-                      PDIRCOSZW,                                     &
-                      PCOSSLOPE,PSINSLOPE,                           &
-                      PRHODJ,                                        &
-                      PCDUEFF,PTAU11M,PTAU12M,PTAU22M,PTAU33M,       &
-                      PUM,PVM,PWM, PUSLOPEM,PVSLOPEM,                &
-                      PTHLM,PRM,PSVM,                                &
-                      PTKEM,PLM,                                     &
-                      PDP,PTP,                                       &
-                      PRUS,PRVS,PRWS                                 )
-!
-!
-!*      12.   < U'V'>
-!
-      CALL      TURB_HOR_UV(KSPLT,                                   &
-                      OTURB_FLX,                                     &
-                      TPFILE,                                        &
-                      PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PDIRCOSZW,                                     &
-                      PCOSSLOPE,PSINSLOPE,                           &
-                      PRHODJ,                                        &
-                      PCDUEFF,PTAU11M,PTAU12M,PTAU22M,PTAU33M,       &
-                      PUM,PVM,PUSLOPEM,PVSLOPEM,                     &
-                      PDP,                                           &
-                      PRUS,PRVS                                      )
-!
-!
-!*      13.   < U'W'>
-!
-      CALL      TURB_HOR_UW(KSPLT,                                   &
-                      OTURB_FLX,KRR,                                 &
-                      TPFILE,                                        &
-                      PK,PINV_PDXX,PINV_PDZZ,PMZM_PRHODJ,            &
-                      PDXX,PDZZ,PDZX,                                &
-                      PRHODJ,PTHVREF,                                &
-                      PUM,PWM,PTHLM,PRM,PSVM,                        &
-                      PTKEM,PLM,                                     &
-                      PDP,                                           &
-                      PRUS,PRWS                                      )
-!
-!
-!*      14.   < V'W'>
-!
-      CALL      TURB_HOR_VW(KSPLT,                                   &
-                      OTURB_FLX,KRR,                                 &
-                      TPFILE,                                        &
-                      PK,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,            &
-                      PDYY,PDZZ,PDZY,                                &
-                      PRHODJ,PTHVREF,                                &
-                      PVM,PWM,PTHLM,PRM,PSVM,                        &
-                      PTKEM,PLM,                                     &
-                      PDP,                                           &
-                      PRVS,PRWS                                      )
-
-!
-!
-!*      15.   HORIZONTAL FLUXES OF PASSIVE SCALARS
-!
-      CALL      TURB_HOR_SV_FLUX(KSPLT,                              &
-                      OTURB_FLX,                                     &
-                      TPFILE,                                        &
-                      PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PDIRCOSXW,PDIRCOSYW,                           &
-                      PRHODJ,PWM,                                    &
-                      PSFSVM,                                        &
-                      PSVM,                                          &
-                      PRSVS                                          )
-!
-      IF (KSPLT==1 .AND. LLES_CALL)                                  &
-      CALL      TURB_HOR_SV_CORR(KRR,KRRL,KRRI,                      &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PLM,PLEPS,PTKEM,PTHVREF,                       &
-                      PTHLM,PRM,                                     &
-                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,               &
-                      PWM,PSVM                                       )
-!
-!
-END SUBROUTINE TURB_HOR
-END MODULE MODE_TURB_HOR
diff --git a/src/common/turb/mode_turb_hor_dyn_corr.F90 b/src/common/turb/mode_turb_hor_dyn_corr.F90
deleted file mode 100644
index 674f91bdc..000000000
--- a/src/common/turb/mode_turb_hor_dyn_corr.F90
+++ /dev/null
@@ -1,556 +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 MODE_TURB_HOR_DYN_CORR
-IMPLICIT NONE
-CONTAINS
-      SUBROUTINE TURB_HOR_DYN_CORR(KSPLT, PTSTEP,                    &
-                      OTURB_FLX,KRR,                                 &
-                      TPFILE,                                        &
-                      PK,PINV_PDZZ,                                  &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
-                      PDIRCOSZW,                                     &
-                      PCOSSLOPE,PSINSLOPE,                           &
-                      PRHODJ,                                        &
-                      PCDUEFF,PTAU11M,PTAU12M,PTAU22M,PTAU33M,       &
-                      PUM,PVM,PWM,PUSLOPEM,PVSLOPEM,                 &
-                      PTHLM,PRM,PSVM,                                &
-                      PTKEM,PLM,                                     &
-                      PDP,PTP,                                       &
-                      PRUS,PRVS,PRWS                                 )
-!     ################################################################
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!     see TURB_HOR
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!                     Aug    , 1997 (V. Saravane) spliting of TURB_HOR
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Oct  18, 2000 (V. Masson) LES computations + LFLAT switch
-!!                     Feb  15, 2001 (J. Stein)  remove the use of w=0 at the
-!!                                               ground   
-!!                     Mar  12, 2001 (V. Masson and J. Stein) major bugs 
-!!                                 + change of discretization at the surface
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
-!!                                              change of YCOMMENT
-!!                     July 2012     (V.Masson) Implicitness of W
-!!                     March 2014    (V.Masson) tridiag_w : bug between
-!!                                               mass and flux position
-!!                     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_ARGSLIST_ll,    ONLY: LIST_ll
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_PARAMETERS
-USE MODD_LES
-USE MODD_NSV
-!
-USE MODE_ll
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-!
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_SHUMAN 
-USE MODE_COEFJ, ONLY: COEFJ
-USE MODI_LES_MEAN_SUBGRID
-USE MODE_TRIDIAG_W
-!
-USE MODI_SECOND_MNH
-USE MODE_MPPDB
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-!
-INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
-REAL,                     INTENT(IN)    ::  PTSTEP       ! timestep
-LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PK          ! Turbulent diffusion doef.
-                                                        ! PK = PLM * SQRT(PTKEM)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDZZ   ! 1./PDZZ
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PZZ          ! vertical grid
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PDIRCOSZW
-! Director Cosinus along z directions at surface w-point
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCOSSLOPE       ! cosinus of the angle 
-                                      ! between i and the slope vector
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE       ! sinus of the angle 
-                                      ! between i and the slope vector
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRHODJ       ! density * grid volume
-!
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCDUEFF      ! Cd * || u || at time t
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU11M      ! <uu> in the axes linked 
-       ! to the maximum slope direction and the surface normal and the binormal 
-       ! at time t - dt
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU12M      ! <uv> in the same axes
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU22M      ! <vv> in the same axes
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU33M      ! <ww> in the same axes
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PUM,PVM,PWM,PTHLM
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PRM
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PSVM
-REAL, DIMENSION(:,:),      INTENT(IN)   ::  PUSLOPEM     ! wind component along the 
-                                     ! maximum slope direction
-REAL, DIMENSION(:,:),      INTENT(IN)   ::  PVSLOPEM     ! wind component along the 
-                                     ! direction normal to the maximum slope one
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTKEM        ! TKE at time t- dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLM          ! Turb. mixing length
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS, PRVS, PRWS
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PDP,PTP      ! TKE production terms
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))       &
-                                     :: ZFLX,ZWORK
-    ! work arrays, PK is the turb. mixing coef.
-!   
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2)) ::ZDIRSINZW 
-      ! sinus of the angle between the vertical and the normal to the orography
-INTEGER             :: IKB,IKE
-                                    ! Index values for the Beginning and End
-                                    ! mass points of the domain  
-INTEGER             :: IKU                                   
-INTEGER             :: JSV          ! scalar loop counter
-!
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))  :: GX_U_M_PUM
-REAL, DIMENSION(SIZE(PVM,1),SIZE(PVM,2),SIZE(PVM,3))  :: GY_V_M_PVM
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GZ_W_M_PWM
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GZ_W_M_ZWP
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: ZMZF_DZZ   ! MZF(PDZZ)
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: ZDFDDWDZ   ! formal derivative of the 
-!                                                                   ! flux (variable: dW/dz)
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: ZWP        ! W at future   time-step
-!
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),1) :: ZDU_DZ_DZS_DX ! du/dz*dzs/dx surf
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),1) :: ZDV_DZ_DZS_DY ! dv/dz*dzs/dy surf
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),1) :: ZDU_DX        ! du/dx        surf
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),1) :: ZDV_DY        ! dv/dy        surf
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),1) :: ZDW_DZ        ! dw/dz        surf
-!
-INTEGER                :: IINFO_ll      ! return code of parallel routine
-TYPE(LIST_ll), POINTER :: TZFIELDS_ll   ! list of fields to exchange
-
-REAL :: ZTIME1, ZTIME2
-
-
-REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF , ZDZZ
-                                    ! coefficients for the uncentred gradient 
-                                    ! computation near the ground
-TYPE(TFIELDDATA) :: TZFIELD
-! --------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-NULLIFY(TZFIELDS_ll)
-!
-IKB = 1+JPVEXT               
-IKE = SIZE(PUM,3)-JPVEXT    
-IKU = SIZE(PUM,3)
-!
-!
-ZDIRSINZW(:,:) = SQRT( 1. - PDIRCOSZW(:,:)**2 )
-!
-GX_U_M_PUM = GX_U_M(PUM,PDXX,PDZZ,PDZX)
-IF (.NOT. L2D) GY_V_M_PVM = GY_V_M(PVM,PDYY,PDZZ,PDZY)
-GZ_W_M_PWM = GZ_W_M(PWM,PDZZ)
-!
-ZMZF_DZZ = MZF(PDZZ)
-!
-CALL ADD3DFIELD_ll( TZFIELDS_ll, ZFLX, 'TURB_HOR_DYN_CORR::ZFLX' )
-
-
-!  compute the coefficients for the uncentred gradient computation near the 
-!  ground
-!
-!*       9.   < U'U'>
-!             -------
-!
-! Computes the U variance
-IF (.NOT. L2D) THEN
-  ZFLX(:,:,:)= (2./3.) * PTKEM                                  &
-    - XCMFS * PK *( (4./3.) * GX_U_M_PUM                        &
-                   -(2./3.) * ( GY_V_M_PVM                      &
-                               +GZ_W_M_PWM                ) ) 
-  !!  &   to be tested later
-  !!  + XCMFB *  PLM / SQRT(PTKEM) * (-2./3.) * PTP 
-ELSE
-  ZFLX(:,:,:)= (2./3.) * PTKEM                                  &
-    - XCMFS * PK *( (4./3.) * GX_U_M_PUM                        &
-                   -(2./3.) * ( GZ_W_M_PWM                ) ) 
-  !!  &   to be tested later
-  !!  + XCMFB *  PLM / SQRT(PTKEM) * (-2./3.) * PTP 
-END IF
-!
-ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
-!
-!* prescription of du/dz and dv/dz with uncentered gradient at the surface
-!  prescription of dw/dz at Dz/2 above ground using the continuity equation
-!  using a Boussinesq hypothesis to remove the z dependance of rhod_ref
-!  (div u = 0)
-!
-ZDZZ(:,:,:) = MXM(PDZZ(:,:,IKB:IKB+2))
-ZCOEFF(:,:,IKB+2)= - ZDZZ(:,:,2) /      &
-       ( (ZDZZ(:,:,3)+ZDZZ(:,:,2)) * ZDZZ(:,:,3) )
-ZCOEFF(:,:,IKB+1)=   (ZDZZ(:,:,3)+ZDZZ(:,:,2)) /      &
-       ( ZDZZ(:,:,2) * ZDZZ(:,:,3) )
-ZCOEFF(:,:,IKB)= - (ZDZZ(:,:,3)+2.*ZDZZ(:,:,2)) /      &
-       ( (ZDZZ(:,:,3)+ZDZZ(:,:,2)) * ZDZZ(:,:,2) )
-!
-ZDU_DZ_DZS_DX(:,:,:)=MXF ((ZCOEFF(:,:,IKB+2:IKB+2)*PUM(:,:,IKB+2:IKB+2)       &
-                          +ZCOEFF(:,:,IKB+1:IKB+1)*PUM(:,:,IKB+1:IKB+1)       &
-                          +ZCOEFF(:,:,IKB  :IKB  )*PUM(:,:,IKB  :IKB  )       &
-                          )* 0.5 * ( PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB)) &
-                         )/ MXF(PDXX(:,:,IKB:IKB))
-!
-ZDZZ(:,:,:) = MYM(PDZZ(:,:,IKB:IKB+2))
-ZCOEFF(:,:,IKB+2)= - ZDZZ(:,:,2) /      &
-       ( (ZDZZ(:,:,3)+ZDZZ(:,:,2)) * ZDZZ(:,:,3) )
-ZCOEFF(:,:,IKB+1)=   (ZDZZ(:,:,3)+ZDZZ(:,:,2)) /      &
-       ( ZDZZ(:,:,2) * ZDZZ(:,:,3) )
-ZCOEFF(:,:,IKB)= - (ZDZZ(:,:,3)+2.*ZDZZ(:,:,2)) /      &
-       ( (ZDZZ(:,:,3)+ZDZZ(:,:,2)) * ZDZZ(:,:,2) )
-!
-
-ZDV_DZ_DZS_DY(:,:,:)=MYF ((ZCOEFF(:,:,IKB+2:IKB+2)*PVM(:,:,IKB+2:IKB+2)       &
-                          +ZCOEFF(:,:,IKB+1:IKB+1)*PVM(:,:,IKB+1:IKB+1)       &
-                          +ZCOEFF(:,:,IKB  :IKB  )*PVM(:,:,IKB  :IKB  )       &
-                          )* 0.5 * ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB)) &
-                         )/ MYF(PDYY(:,:,IKB:IKB))
-!
-!
-ZDU_DX(:,:,:)=  DXF(PUM(:,:,IKB:IKB)) / MXF(PDXX(:,:,IKB:IKB))  &
-              - ZDU_DZ_DZS_DX(:,:,:)
-
-ZDV_DY(:,:,:)=  DYF(PVM(:,:,IKB:IKB)) / MYF(PDYY(:,:,IKB:IKB)) &
-              - ZDV_DZ_DZS_DY(:,:,:)
-!
-ZDW_DZ(:,:,:)=-ZDU_DX(:,:,:)-ZDV_DY(:,:,:)
-!
-!* computation 
-!
-ZFLX(:,:,IKB)   = (2./3.) * PTKEM(:,:,IKB)                           &
-  - XCMFS * PK(:,:,IKB) * 2. * ZDU_DX(:,:,1)
-
-
-!!  &  to be tested later
-!! + XCMFB * PLM(:,:,IKB:IKB) /SQRT(PTKEM(:,:,IKB:IKB)) *        &
-!!   (-2./3.) * PTP(:,:,IKB:IKB)
-!
-! extrapolates this flux under the ground with the surface flux
-ZFLX(:,:,IKB-1) =                                                            &
-        PTAU11M(:,:) * PCOSSLOPE(:,:)**2 * PDIRCOSZW(:,:)**2                 &
-  -2. * PTAU12M(:,:) * PCOSSLOPE(:,:)* PSINSLOPE(:,:) * PDIRCOSZW(:,:)       &
-  +     PTAU22M(:,:) * PSINSLOPE(:,:)**2                                     &
-  +     PTAU33M(:,:) * PCOSSLOPE(:,:)**2 * ZDIRSINZW(:,:)**2                 &
-  +2. * PCDUEFF(:,:) *      (                                                &
-      PVSLOPEM(:,:) * PCOSSLOPE(:,:)    * PSINSLOPE(:,:) * ZDIRSINZW(:,:)    &
-    - PUSLOPEM(:,:) * PCOSSLOPE(:,:)**2 * ZDIRSINZW(:,:) * PDIRCOSZW(:,:)    )
-! 
-ZFLX(:,:,IKB-1) = 2. * ZFLX(:,:,IKB-1) -  ZFLX(:,:,IKB)
-!
-CALL UPDATE_HALO_ll(TZFIELDS_ll, IINFO_ll)
-IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-  ! stores <U U>  
-  TZFIELD%CMNHNAME   = 'U_VAR'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'U_VAR'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_U_VAR'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-END IF
-!
-! Complete the U tendency
-IF (.NOT. LFLAT) THEN
-CALL MPPDB_CHECK3DM("before turb_corr:PRUS,PRHODJ,ZFLX,PDXX,PDZX,PINV_PDZZ",PRECISION,&
-                   & PRUS,PRHODJ,ZFLX,PDXX,PDZX,PINV_PDZZ )
-
-  PRUS(:,:,:)=PRUS                                            &
-              -DXM(PRHODJ * ZFLX / MXF(PDXX) )                &
-              +DZF( PDZX / MZM(PDXX) * MXM( MZM(PRHODJ*ZFLX) * PINV_PDZZ ) )
-CALL MPPDB_CHECK3DM("after  turb_corr:PRUS,PRHODJ,ZFLX,PDXX,PDZX,PINV_PDZZ",PRECISION,&
-                   & PRUS,PRHODJ,ZFLX,PDXX,PDZX,PINV_PDZZ )
-ELSE
-  PRUS(:,:,:)=PRUS -DXM(PRHODJ * ZFLX / MXF(PDXX) )
-END IF
-!
-IF (KSPLT==1) THEN
-  ! Contribution to the dynamic production of TKE:
-  ZWORK(:,:,:)     = - ZFLX(:,:,:) * GX_U_M_PUM
-  !
-  ! evaluate the dynamic production at w(IKB+1) in PDP(IKB)
-  !
-  ZWORK(:,:,IKB) = 0.5* ( -ZFLX(:,:,IKB)*ZDU_DX(:,:,1) + ZWORK(:,:,IKB+1) )
-  !
-  PDP(:,:,:) = PDP(:,:,:) + ZWORK(:,:,:)
-END IF
-!
-! Storage in the LES configuration
-!
-IF (LLES_CALL .AND. KSPLT==1) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_U2 ) 
-  CALL LES_MEAN_SUBGRID( -ZWORK, X_LES_RES_ddxa_U_SBG_UaU , .TRUE.)
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-
-!
-!*      10.   < V'V'>
-!             -------
-!
-! Computes the V variance
-IF (.NOT. L2D) THEN
-  ZFLX(:,:,:)= (2./3.) * PTKEM                                  &
-    - XCMFS * PK *( (4./3.) * GY_V_M_PVM                        &
-                   -(2./3.) * ( GX_U_M_PUM                      &
-                               +GZ_W_M_PWM                ) )  
-  !! &  to be tested
-  !!  + XCMFB *  PLM / SQRT(PTKEM) * (-2./3.) * PTP 
-  !
-ELSE
-  ZFLX(:,:,:)= (2./3.) * PTKEM                                  &
-    - XCMFS * PK *(-(2./3.) * ( GX_U_M_PUM                      &
-                               +GZ_W_M_PWM                ) )  
-  !! &  to be tested
-  !!  + XCMFB *  PLM / SQRT(PTKEM) * (-2./3.) * PTP 
-  !
-END IF
-!
-ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
-!
-ZFLX(:,:,IKB)   = (2./3.) * PTKEM(:,:,IKB)                           &
-  - XCMFS * PK(:,:,IKB) * 2. * ZDV_DY(:,:,1)
-
-!!           & to be tested
-!! + XCMFB * PLM(:,:,IKB:IKB) /SQRT(PTKEM(:,:,IKB:IKB)) *         &
-!!   (-2./3.) * PTP(:,:,IKB:IKB)
-!
-! extrapolates this flux under the ground with the surface flux
-ZFLX(:,:,IKB-1) =                                                            &
-        PTAU11M(:,:) * PSINSLOPE(:,:)**2 * PDIRCOSZW(:,:)**2                 &         
-  +2. * PTAU12M(:,:) * PCOSSLOPE(:,:)* PSINSLOPE(:,:) * PDIRCOSZW(:,:)       &
-  +     PTAU22M(:,:) * PCOSSLOPE(:,:)**2                                     &
-  +     PTAU33M(:,:) * PSINSLOPE(:,:)**2 * ZDIRSINZW(:,:)**2                 &
-  -2. * PCDUEFF(:,:)*       (                                                &
-      PUSLOPEM(:,:) * PSINSLOPE(:,:)**2 * ZDIRSINZW(:,:) * PDIRCOSZW(:,:)    &
-    + PVSLOPEM(:,:) * PCOSSLOPE(:,:)    * PSINSLOPE(:,:) * ZDIRSINZW(:,:)    )
-! 
-ZFLX(:,:,IKB-1) = 2. * ZFLX(:,:,IKB-1) -  ZFLX(:,:,IKB)
-!
-CALL UPDATE_HALO_ll(TZFIELDS_ll, IINFO_ll)
-!
-IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-  ! stores <V V>  
-  TZFIELD%CMNHNAME   = 'V_VAR'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'V_VAR'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_V_VAR'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-END IF
-!
-! Complete the V tendency
-IF (.NOT. L2D) THEN
-  IF (.NOT. LFLAT) THEN
-    PRVS(:,:,:)=PRVS                                          &
-                -DYM(PRHODJ * ZFLX / MYF(PDYY) )              &
-                +DZF( PDZY / MZM(PDYY) *                      &
-                MYM( MZM(PRHODJ*ZFLX) * PINV_PDZZ ) )
-  ELSE
-    PRVS(:,:,:)=PRVS -DYM(PRHODJ * ZFLX / MYF(PDYY) )
-  END IF
-!
-! Contribution to the dynamic production of TKE:
-  IF (KSPLT==1) ZWORK(:,:,:)     = - ZFLX(:,:,:) * GY_V_M_PVM
-ELSE
-  ZWORK(:,:,:)     = 0.
-END IF
-!
-IF (KSPLT==1) THEN
-  !
-  ! evaluate the dynamic production at w(IKB+1) in PDP(IKB)
-  !
-  ZWORK(:,:,IKB) = 0.5* ( -ZFLX(:,:,IKB)*ZDV_DY(:,:,1) + ZWORK(:,:,IKB+1) )
-  !
-  PDP(:,:,:) = PDP(:,:,:) + ZWORK(:,:,:)
-END IF
-!
-! Storage in the LES configuration
-!
-IF (LLES_CALL .AND. KSPLT==1) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_V2 ) 
-  CALL LES_MEAN_SUBGRID( -ZWORK, X_LES_RES_ddxa_V_SBG_UaV , .TRUE.)
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-!
-!*      11.   < W'W'>
-!             -------
-!
-! Computes the W variance
-IF (.NOT. L2D) THEN
-  ZFLX(:,:,:)= (2./3.) * PTKEM                                  &
-    - XCMFS * PK *( (4./3.) * GZ_W_M_PWM                        &
-                   -(2./3.) * ( GX_U_M_PUM                      &
-                               +GY_V_M_PVM                ) ) 
-  !!  &  to be tested
-  !!    -2.* XCMFB *  PLM / SQRT(PTKEM) * (-2./3.) * PTP 
-ELSE
-  ZFLX(:,:,:)= (2./3.) * PTKEM                                  &
-    - XCMFS * PK *( (4./3.) * GZ_W_M_PWM                        &
-                   -(2./3.) * ( GX_U_M_PUM                ) ) 
-  !!  &  to be tested
-  !!    -2.* XCMFB *  PLM / SQRT(PTKEM) * (-2./3.) * PTP 
-END IF
-!
-ZFLX(:,:,IKE+1)= ZFLX(:,:,IKE)
-!
-ZFLX(:,:,IKB)   = (2./3.) * PTKEM(:,:,IKB)                           &
-  - XCMFS * PK(:,:,IKB) * 2. * ZDW_DZ(:,:,1)
-
-!             &  to be tested
-!   - 2.* XCMFB * PLM(:,:,IKB:IKB) /SQRT(PTKEM(:,:,IKB:IKB)) *             &
-!  (-2./3.) * PTP(:,:,IKB:IKB)
-!
-! extrapolates this flux under the ground with the surface flux
-ZFLX(:,:,IKB-1) =                                                     &
-        PTAU11M(:,:) * ZDIRSINZW(:,:)**2                                &
-  +     PTAU33M(:,:) * PDIRCOSZW(:,:)**2                                &
-  +2. * PCDUEFF(:,:)* PUSLOPEM(:,:)  * ZDIRSINZW(:,:) * PDIRCOSZW(:,:) 
-  ! 
-ZFLX(:,:,IKB-1) = 2. * ZFLX(:,:,IKB-1) - ZFLX(:,:,IKB)
-!
-IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-  ! stores <W W>  
-  TZFIELD%CMNHNAME   = 'W_VAR'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'W_VAR'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_W_VAR'
-  TZFIELD%NGRID      = 1
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-END IF
-!
-! Complete the W tendency
-!
-!PRWS(:,:,:)=PRWS(:,:,:) - DZM( PRHODJ*ZFLX/MZF(PDZZ) )
-ZDFDDWDZ(:,:,:)    = - XCMFS * PK(:,:,:) * (4./3.)
-ZDFDDWDZ(:,:,:IKB) = 0.
-!
-CALL TRIDIAG_W(PWM,ZFLX,ZDFDDWDZ,PTSTEP,ZMZF_DZZ,PRHODJ,ZWP)
-!
-PRWS = PRWS(:,:,:) + MZM(PRHODJ(:,:,:))*(ZWP(:,:,:)-PWM(:,:,:))/PTSTEP
-!
-!* recomputes flux using guess of W
-!
-GZ_W_M_ZWP = GZ_W_M(ZWP,PDZZ)
-ZFLX(:,:,IKB+1:)=ZFLX(:,:,IKB+1:) &
-  - XCMFS * PK(:,:,IKB+1:) * (4./3.) * (GZ_W_M_ZWP(:,:,IKB+1:) - GZ_W_M_PWM(:,:,IKB+1:))
-!
-IF (KSPLT==1) THEN
-  !Contribution to the dynamic production of TKE:
-! ZWORK(:,:,:) = - ZFLX(:,:,:) * GZ_W_M_PWM
-  ZWORK(:,:,:) = - ZFLX(:,:,:) * GZ_W_M_ZWP
-  !
-  ! evaluate the dynamic production at w(IKB+1) in PDP(IKB)
-  !
-  ZWORK(:,:,IKB) = 0.5* ( -ZFLX(:,:,IKB)*ZDW_DZ(:,:,1) + ZWORK(:,:,IKB+1) )
-  !
-  PDP(:,:,:) = PDP(:,:,:) + ZWORK(:,:,:)
-END IF
-!
-! Storage in the LES configuration
-!
-!
-IF (LLES_CALL .AND. KSPLT==1) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_W2 ) 
-  CALL LES_MEAN_SUBGRID( -ZWORK, X_LES_RES_ddxa_W_SBG_UaW , .TRUE.)
-  CALL LES_MEAN_SUBGRID( GZ_M_M(PTHLM,PDZZ)*ZFLX, X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE.)
-  CALL LES_MEAN_SUBGRID(ZFLX*MZF(GZ_M_W(1,IKU,1,PTHLM,PDZZ)),X_LES_RES_ddz_Thl_SBG_W2)
-  IF (KRR>=1) THEN
-    CALL LES_MEAN_SUBGRID( GZ_M_M(PRM(:,:,:,1),PDZZ)*ZFLX, &
-                           X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE.)
-    CALL LES_MEAN_SUBGRID(ZFLX*MZF(GZ_M_W(1,IKU,1,PRM(:,:,:,1),PDZZ)), &
-                           X_LES_RES_ddz_Rt_SBG_W2)
-  END IF
-  DO JSV=1,NSV
-    CALL LES_MEAN_SUBGRID( GZ_M_M(PSVM(:,:,:,JSV),PDZZ)*ZFLX, &
-                           X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV) , .TRUE.)
-    CALL LES_MEAN_SUBGRID(ZFLX*MZF(GZ_M_W(1,IKU,1,PSVM(:,:,:,JSV),PDZZ)), &
-                           X_LES_RES_ddz_Sv_SBG_W2(:,:,:,JSV))
-  END DO
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-!
-CALL CLEANLIST_ll(TZFIELDS_ll)
-!
-!
-END SUBROUTINE TURB_HOR_DYN_CORR
-END MODULE MODE_TURB_HOR_DYN_CORR
diff --git a/src/common/turb/mode_turb_hor_splt.F90 b/src/common/turb/mode_turb_hor_splt.F90
deleted file mode 100644
index 456abc075..000000000
--- a/src/common/turb/mode_turb_hor_splt.F90
+++ /dev/null
@@ -1,535 +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 MODE_TURB_HOR_SPLT
-IMPLICIT NONE
-CONTAINS
-           SUBROUTINE TURB_HOR_SPLT(KSPLIT, KRR, KRRL, KRRI, PTSTEP,      &
-                      HLBCX,HLBCY,OTURB_FLX,OSUBG_COND,              &
-                      TPFILE,                                        &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
-                      PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
-                      PCOSSLOPE,PSINSLOPE,                           &
-                      PRHODJ,PTHVREF,                                & 
-                      PSFTHM,PSFRM,PSFSVM,                           &
-                      PCDUEFF,PTAU11M,PTAU12M,PTAU22M,PTAU33M,       &
-                      PUM,PVM,PWM,PUSLOPEM,PVSLOPEM,PTHLM,PRM,PSVM,  &
-                      PTKEM,PLM,PLEPS,                               &
-                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE,     &
-                      PDP,PTP,PSIGS,                                 &
-                      PTRH,                                          &
-                      PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS               )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!       The purpose of this routine is to compute the non-vertical
-!     turbulent fluxes of the evolutive variables and give back the 
-!     source terms to the main program.
-!
-!!**  METHOD
-!!    ------
-!!     Complementary 3D calculations when running at high resolution;
-!!    The non-vertical turbulent fluxes are computed explicitly. The 
-!!    contributions are cumulated in PRvarS and in DP and TP of TKE
-!
-! d(rho*T) = -d(rho*u'T'/dxx) -d(-rho*u'T'*dzx/dxx/dzz)
-! / dt        / dx             /dz
-!!    
-!!
-!!      Near the bottom of the model, uncentred evaluation of vertical 
-!!    gradients are required because no field values are available under 
-!!    the level where the gradient must be evaluated. In this case, the 
-!!    gradient is computed with a second order accurate uncentred scheme 
-!!    according to:
-!!
-!!        D FF           dzz3                       (dzz3+dzz4)   
-!!        ----  = -  ----------------- FF(4)  +  ----------------- FF(3)   
-!!        D z         (dzz3+dzz4) dzz4              dzz3 dzz4 
-!!  
-!!                    dzz4 + 2 dzz3          
-!!                -  ----------------- FF(2)
-!!                    (dzz3+dzz4) dzz3
-!!
-!!      where the values are taken from:
-!!
-!!                  -----    FF(5)
-!!                    | 
-!!                    |   dzz5
-!!                    |    
-!!                  -----    FF(4)
-!!                    | 
-!!                    |   dzz4
-!!                    |    
-!!                  -----    FF(3)
-!!                    | 
-!!                    |   dzz3
-!!                    |    
-!!                  -----    FF(2)    , (D FF / DZ)
-!!                    |   dzz2 * 0.5
-!!                  -----    ground
-!!
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!      GX_M_U, GY_M_V
-!!      GX_M_M, GY_M_M, GZ_M_M
-!!      GY_U_UV,GX_V_UV
-!!      GX_U_M, GY_V_M, GZ_W_M
-!!      GX_W_UW,GY_W_UW
-!!                             :  Cartesian vertical gradient operators 
-!!                               
-!!
-!!      MXM,MXF,MYM,MYF,MZM,MZF
-!!                             :  Shuman functions (mean operators)     
-!!      DXM,DXF.DYM,DYF,DZM,DZF
-!!                             :  Shuman functions (difference operators)     
-!!
-!!       
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!      Module MODD_CST : contains physical constants
-!!
-!!           XG         : gravity constant
-!!
-!!      Module MODD_CTURB: contains the set of constants for
-!!                        the turbulence scheme
-!!
-!!           XCMFS,XCMFB : cts for the momentum flux
-!!           XCSHF       : ct for the sensible heat flux
-!!           XCHF        : ct for the moisture flux
-!!           XCTV,XCHV   : cts for the T and moisture variances
-!!
-!!      Module MODD_PARAMETERS
-!!
-!!           JPVEXT     : number of vertical external points
-!!
-!!      Module MODD_CONF
-!!
-!!           CPROGRAM
-!!           
-!!
-!!    REFERENCE
-!!    ---------
-!!      Book 2 of documentation (routine TURB_HOR)
-!!      Book 1 of documentation (Chapter: Turbulence)
-!!
-!!    AUTHOR
-!!    ------
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original       Aug 29, 1994
-!!      Modifications: Feb 14, 1995 (J.Cuxart and J.Stein) 
-!!                                  Doctorization and Optimization
-!!                     March 21, 1995 (J.M. Carriere) 
-!!                                  Introduction of cloud water
-!!                     June  14, 1995 (J. Stein) 
-!!                                  rm the ZVTPV computation + bug in the all 
-!!                                  or nothing condens. case
-!!                     June 28, 1995 (J.Cuxart)  Add the LES tools 
-!!                     Sept 19, 1995 (J. Stein) change the surface flux
-!!               computations
-!!                     Nov  13, 1995 (J. Stein) include the tangential fluxes
-!!               bug in <u'w'> at the surface
-!!                     Nov  27, 1997 (V. Saravane) spliting of the routine
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Mar  07, 2001 (V. Masson and J. Stein) time splitting
-!!                                   + major bugs correction for slopes
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!                     Feb  20, 2003 (JP Pinty)  Add PFRAC_ICE
-!!                     Oct.2009  (C.Lac) Introduction of different PTSTEP according to the
-!!                              advection schemes
-!!                     J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CONF
-USE MODD_CST
-USE MODD_CTURB
-USE MODD_IO, ONLY: TFILEDATA
-USE MODD_PARAMETERS
-!
-!
-USE MODI_SHUMAN 
-USE MODE_TURB_HOR
-USE MODE_TURB_HOR_TKE
-!
-USE MODE_ll
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-INTEGER,                INTENT(IN)   :: KSPLIT        ! number of time splitting
-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.
-REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
-CHARACTER (LEN=*), DIMENSION(:), INTENT(IN)       ::  HLBCX,HLBCY
-LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
-!                                                    condensation
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PZZ          ! vertical grid
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PDIRCOSXW, PDIRCOSYW, PDIRCOSZW
-! Director Cosinus along x, y and z directions at surface w-point
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCOSSLOPE       ! cosinus of the angle 
-                                      ! between i and the slope vector
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE       ! sinus of the angle 
-                                      ! between i and the slope vector
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRHODJ       ! density * grid volume
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTHVREF      ! ref. state VPT       
-!
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PSFTHM,PSFRM
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PSFSVM       ! surface fluxes
-!
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCDUEFF      ! Cd * || u || at time t
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU11M      ! <uu> in the axes linked 
-       ! to the maximum slope direction and the surface normal and the binormal 
-       ! at time t - dt
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU12M      ! <uv> in the same axes
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU22M      ! <vv> in the same axes
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU33M      ! <ww> in the same axes
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PUM,PVM,PWM,PTHLM 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PRM          ! mixing ratios at t-1,
-                              !  where PRM(:,:,:,1) = conservative mixing ratio
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PSVM         ! scalar var. at t-1
-REAL, DIMENSION(:,:),      INTENT(IN)   ::  PUSLOPEM     ! wind component along the 
-                                     ! maximum slope direction
-REAL, DIMENSION(:,:),      INTENT(IN)   ::  PVSLOPEM     ! wind component along the 
-                                     ! direction normal to the maximum slope one
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTKEM        ! TKE at time t- dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLM          ! Turb. mixing length
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLEPS        ! dissipative length
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLOCPEXNM    ! Lv(T)/Cp/Exner at time t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PATHETA      ! coefficients between 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PAMOIST      ! s and Thetal and Rnp
-
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PSRCM
-                                  ! normalized 2nd-order flux
-                                  ! s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PFRAC_ICE    ! ri fraction of rc+ri
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS, PRVS, PRWS, PRTHLS
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS,PRRS   ! var. at t+1 -split-
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PDP,PTP      ! TKE production terms
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   ::  PTRH
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
-                                  ! IN: Vertical part of Sigma_s at t
-                                  ! OUT: Total Sigma_s at t
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-REAL,ALLOCATABLE,DIMENSION(:,:,:) :: ZK           ! Turbulent diffusion doef.
-                                                  ! ZK = PLM * SQRT(PTKEM)
-REAL,ALLOCATABLE,DIMENSION(:,:,:) :: ZINV_PDXX    ! 1./PDXX
-REAL,ALLOCATABLE,DIMENSION(:,:,:) :: ZINV_PDYY    ! 1./PDYY
-REAL,ALLOCATABLE,DIMENSION(:,:,:) :: ZINV_PDZZ    ! 1./PDZZ
-REAL,ALLOCATABLE,DIMENSION(:,:,:) :: ZMZM_PRHODJ  ! MZM(PRHODJ)
-!
-INTEGER :: JSPLT ! current split
-!
-INTEGER :: IKB, IKE, IIB, IIE, IJB, IJE
-INTEGER :: JRR, JSV
-!
-INTEGER :: ISV
-INTEGER :: IINFO_ll
-!
-REAL,ALLOCATABLE,DIMENSION(:,:,:)   :: ZUM, ZVM, ZWM, ZTHLM, ZTKEM
-REAL,ALLOCATABLE,DIMENSION(:,:,:,:) :: ZRM, ZSVM
-REAL,ALLOCATABLE,DIMENSION(:,:,:)   :: ZRUS, ZRVS, ZRWS, ZRTHLS
-REAL,ALLOCATABLE,DIMENSION(:,:,:,:) :: ZRRS, ZRSVS
-!
-!
-TYPE(LIST_ll), POINTER, SAVE :: TZFIELDS_ll
-!
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-IKB = 1.+JPVEXT
-IKE = SIZE(PUM,3) - JPVEXT
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-ISV=SIZE(PSVM,4)
-!
-ALLOCATE(ZK(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
-ALLOCATE(ZINV_PDXX(SIZE(PDXX,1),SIZE(PDXX,2),SIZE(PDXX,3)))
-ALLOCATE(ZINV_PDYY(SIZE(PDYY,1),SIZE(PDYY,2),SIZE(PDYY,3)))
-ALLOCATE(ZINV_PDZZ(SIZE(PDZZ,1),SIZE(PDZZ,2),SIZE(PDZZ,3)))
-ALLOCATE(ZMZM_PRHODJ(SIZE(PRHODJ,1),SIZE(PRHODJ,2),SIZE(PRHODJ,3)))
-!
-ZINV_PDXX = 1./PDXX
-ZINV_PDYY = 1./PDYY
-ZINV_PDZZ = 1./PDZZ
-ZMZM_PRHODJ = MZM(PRHODJ)
-!
-ZK(:,:,:)         = PLM(:,:,:) * SQRT(PTKEM(:,:,:))
-!
-NULLIFY(TZFIELDS_ll)
-!
-!--------------------------------------------------------------------
-!
-!*       2.   SPLIT PROCESS LOOP
-!             ------------------
-!
-IF (KSPLIT>1 .AND. CPROGRAM=='MESONH') THEN
-!
-!*       2.1  allocations
-!             -----------
-!
-  ALLOCATE(ZUM(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3)))
-  ALLOCATE(ZVM(SIZE(PVM,1),SIZE(PVM,2),SIZE(PVM,3)))
-  ALLOCATE(ZWM(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3)))
-  ALLOCATE(ZSVM(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3),SIZE(PSVM,4)))
-  ALLOCATE(ZTHLM(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3)))
-  ALLOCATE(ZTKEM(SIZE(PTKEM,1),SIZE(PTKEM,2),SIZE(PTKEM,3)))
-  ALLOCATE(ZRM(SIZE(PRM,1),SIZE(PRM,2),SIZE(PRM,3),SIZE(PRM,4)))
-  ALLOCATE(ZRUS(SIZE(PRUS,1),SIZE(PRUS,2),SIZE(PRUS,3)))
-  ALLOCATE(ZRVS(SIZE(PRVS,1),SIZE(PRVS,2),SIZE(PRVS,3)))
-  ALLOCATE(ZRWS(SIZE(PRWS,1),SIZE(PRWS,2),SIZE(PRWS,3)))
-  ALLOCATE(ZRSVS(SIZE(PRSVS,1),SIZE(PRSVS,2),SIZE(PRSVS,3),SIZE(PRSVS,4)))
-  ALLOCATE(ZRTHLS(SIZE(PRTHLS,1),SIZE(PRTHLS,2),SIZE(PRTHLS,3)))
-  ALLOCATE(ZRRS(SIZE(PRRS,1),SIZE(PRRS,2),SIZE(PRRS,3),SIZE(PRRS,4)))
-!
-!
-!*       2.2  list for parallel exchanges
-!             ---------------------------
-!
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, ZUM,               'TURB_HOR_SPLT::ZUM'               )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, ZVM,               'TURB_HOR_SPLT::ZVM'               )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, ZWM,               'TURB_HOR_SPLT::ZWM'               )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, ZTHLM,             'TURB_HOR_SPLT::ZTHLM'             )
-  CALL ADD3DFIELD_ll( TZFIELDS_ll, ZTKEM,             'TURB_HOR_SPLT::ZTKEM'             )
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, ZSVM(:,:,:,1:ISV), 'TURB_HOR_SPLT::ZSVM(:,:,:,1:ISV)' )
-  CALL ADD4DFIELD_ll( TZFIELDS_ll, ZRM(:,:,:,1:KRR),  'TURB_HOR_SPLT::ZRM(:,:,:,1:KRR)'  )
-!
-!
-!*       2.3  initializations
-!             ---------------
-!
-!
-  ZUM=PUM
-  ZVM=PVM
-  ZWM=PWM
-  IF (ISV>0) ZSVM=PSVM
-  ZTHLM=PTHLM
-  ZTKEM=PTKEM
-  IF (KRR>0) ZRM=PRM
-  !
-  ZRUS=PRUS*KSPLIT
-  ZRVS=PRVS*KSPLIT
-  ZRWS=PRWS*KSPLIT
-  IF (ISV>0) ZRSVS=PRSVS*KSPLIT
-  ZRTHLS=PRTHLS*KSPLIT
-  IF (KRR>0) ZRRS=PRRS*KSPLIT
-
-!
-!*       2.4  split process
-!             -------------
-!
-  DO JSPLT=1,KSPLIT
-!
-! compute the turbulent tendencies for the small time step
-    CALL TURB_HOR(JSPLT, KRR, KRRL, KRRI, PTSTEP,                 &
-                   OTURB_FLX,OSUBG_COND,                          &
-                   TPFILE,                                        &
-                   PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
-                   PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
-                   PCOSSLOPE,PSINSLOPE,                           &
-                   ZINV_PDXX, ZINV_PDYY, ZINV_PDZZ, ZMZM_PRHODJ,  &
-                   ZK,                                            &
-                   PRHODJ,PTHVREF,                                & 
-                   PSFTHM,PSFRM,PSFSVM,                           &
-                   PCDUEFF,PTAU11M,PTAU12M,PTAU22M,PTAU33M,       &
-                   ZUM,ZVM,ZWM,PUSLOPEM,PVSLOPEM,ZTHLM,ZRM,ZSVM,  &
-                   PTKEM,PLM,PLEPS,                               &
-                   PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE,     &
-                   PDP,PTP,PSIGS,                                 &
-                   ZRUS,ZRVS,ZRWS,ZRTHLS,ZRRS,ZRSVS               )
-!
-! horizontal transport of Tke
-!
-  CALL   TURB_HOR_TKE(JSPLT,                                         &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      ZINV_PDXX, ZINV_PDYY, ZINV_PDZZ, ZMZM_PRHODJ,  &
-                      ZK, PRHODJ, ZTKEM,                             &
-                      PTRH                                           )
-!
-!
-! split temporal advance
-
-    ZUM=PUM+(ZRUS/KSPLIT-PRUS)/MXM(PRHODJ)*PTSTEP
-    ZVM=PVM+(ZRVS/KSPLIT-PRVS)/MYM(PRHODJ)*PTSTEP
-    ZWM=PWM+(ZRWS/KSPLIT-PRWS)/ZMZM_PRHODJ*PTSTEP
-    DO JSV=1,ISV
-      ZSVM(:,:,:,JSV)=PSVM(:,:,:,JSV)+   &
-        (ZRSVS(:,:,:,JSV)/KSPLIT-PRSVS(:,:,:,JSV))/PRHODJ*PTSTEP
-    END DO
-    ZTHLM=PTHLM+(ZRTHLS/KSPLIT-PRTHLS)/PRHODJ*PTSTEP
-    ZTKEM=ZTKEM+PTRH*PTSTEP/KSPLIT
-    DO JRR=1,KRR
-      ZRM(:,:,:,JRR)=PRM(:,:,:,JRR)+   &
-       (ZRRS(:,:,:,JRR)/KSPLIT-PRRS(:,:,:,JRR))/PRHODJ*PTSTEP
-    END DO
-!
-! reinforce boundary conditions
-!
-    IF (JSPLT<KSPLIT-NHALO+1) CALL UPDATE_HALO_ll(TZFIELDS_ll,IINFO_ll)
-    !
-    IF ( HLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN
-       ZUM(IIB  ,:,:)=PUM(IIB  ,:,:)
-       ZVM(IIB-1,:,:)=PVM(IIB-1,:,:)
-       ZWM(IIB-1,:,:)=PWM(IIB-1,:,:)
-       ZTHLM(IIB-1,:,:)=PTHLM(IIB-1,:,:)
-       ZTKEM(IIB-1,:,:)=PTKEM(IIB-1,:,:)
-       IF (ISV>0) ZSVM(IIB-1,:,:,:)=PSVM(IIB-1,:,:,:)
-       IF (KRR>0) ZRM (IIB-1,:,:,:)=PRM (IIB-1,:,:,:)
-     ENDIF
-     !
-     IF ( HLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
-       ZUM(IIE+1,:,:)=PUM(IIE+1,:,:)
-       ZVM(IIE+1,:,:)=PVM(IIE+1,:,:)
-       ZWM(IIE+1,:,:)=PWM(IIE+1,:,:)
-       ZTHLM(IIE+1,:,:)=PTHLM(IIE+1,:,:)
-       ZTKEM(IIE+1,:,:)=PTKEM(IIE+1,:,:)
-       IF (ISV>0) ZSVM(IIE+1,:,:,:)=PSVM(IIE+1,:,:,:)
-       IF (KRR>0) ZRM (IIE+1,:,:,:)=PRM(IIE+1,:,:,:)
-     ENDIF
-     !
-     IF ( HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
-       ZUM(:,IJB-1,:)=PUM(:,IJB-1,:)
-       ZVM(:,IJB  ,:)=PVM(:,IJB  ,:)
-       ZWM(:,IJB-1,:)=PWM(:,IJB-1,:)
-       ZTHLM(:,IJB-1,:)=PTHLM(:,IJB-1,:)
-       ZTKEM(:,IJB-1,:)=PTKEM(:,IJB-1,:)
-       IF (ISV>0) ZSVM(:,IJB-1,:,:)=PSVM(:,IJB-1,:,:)
-       IF (KRR>0) ZRM (:,IJB-1,:,:)=PRM (:,IJB-1,:,:)
-     ENDIF
-     !
-     IF ( HLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
-       ZUM(:,IJE+1,:)=PUM(:,IJE+1,:)
-       ZVM(:,IJE+1,:)=PVM(:,IJE+1,:)
-       ZWM(:,IJE+1,:)=PWM(:,IJE+1,:)
-       ZTHLM(:,IJE+1,:)=PTHLM(:,IJE+1,:)
-       ZTKEM(:,IJE+1,:)=PTKEM(:,IJE+1,:)
-       IF (ISV>0) ZSVM(:,IJE+1,:,:)=PSVM(:,IJE+1,:,:)
-       IF (KRR>0) ZRM (:,IJE+1,:,:)=PRM(:,IJE+1,:,:)
-     ENDIF
-     !
-     ZUM(:,:,IKB-1)=ZUM(:,:,IKB)
-     ZVM(:,:,IKB-1)=ZVM(:,:,IKB)
-     ZWM(:,:,IKB-1)=ZWM(:,:,IKB)
-     ZTHLM(:,:,IKB-1)=ZTHLM(:,:,IKB)
-     ZTKEM(:,:,IKB-1)=ZTKEM(:,:,IKB)
-     IF (ISV>0) ZSVM(:,:,IKB-1,:)=ZSVM(:,:,IKB,:)
-     IF (KRR>0) ZRM (:,:,IKB-1,:)=ZRM (:,:,IKB,:)
-     !
-     ZUM(:,:,IKE+1)=ZUM(:,:,IKE)
-     ZVM(:,:,IKE+1)=ZVM(:,:,IKE)
-     ZWM(:,:,IKE+1)=ZWM(:,:,IKE)
-     ZTHLM(:,:,IKE+1)=ZTHLM(:,:,IKE)
-     ZTKEM(:,:,IKE+1)=ZTKEM(:,:,IKE)
-     IF (ISV>0) ZSVM(:,:,IKE+1,:)=ZSVM(:,:,IKE,:)
-     IF (KRR>0) ZRM (:,:,IKE+1,:)=ZRM (:,:,IKE,:)
-     !
-  END DO
-!
-!*       2.5  update the complete tendencies
-!             ------------------------------
-!
-  PRUS=ZRUS/KSPLIT
-  PRVS=ZRVS/KSPLIT
-  PRWS=ZRWS/KSPLIT
-  IF (ISV>0) PRSVS=ZRSVS/KSPLIT
-  PRTHLS=ZRTHLS/KSPLIT
-  IF (KRR>0) PRRS=ZRRS/KSPLIT
-  PTRH=(ZTKEM-PTKEM)/PTSTEP
-!
-!*       2.6  deallocations
-!             -------------
-!
-  DEALLOCATE(ZUM)
-  DEALLOCATE(ZVM)
-  DEALLOCATE(ZWM)
-  DEALLOCATE(ZSVM)
-  DEALLOCATE(ZTHLM)
-  DEALLOCATE(ZTKEM)
-  DEALLOCATE(ZRM)
-  DEALLOCATE(ZRUS)
-  DEALLOCATE(ZRVS)
-  DEALLOCATE(ZRWS)
-  DEALLOCATE(ZRSVS)
-  DEALLOCATE(ZRTHLS)
-  DEALLOCATE(ZRRS)
-  !
-  CALL CLEANLIST_ll(TZFIELDS_ll)
-!
-!-------------------------------------------------------------------
-!
-!*       4.   NO SPLIT PROCESS CASE
-!             ---------------------
-!
-ELSE
-!
-  CALL TURB_HOR(1, KRR, KRRL, KRRI,  PTSTEP,                   &
-                OTURB_FLX,OSUBG_COND,                          &
-                TPFILE,                                        &
-                PDXX,PDYY,PDZZ,PDZX,PDZY,PZZ,                  &
-                PDIRCOSXW,PDIRCOSYW,PDIRCOSZW,                 &
-                PCOSSLOPE,PSINSLOPE,                           &
-                ZINV_PDXX, ZINV_PDYY, ZINV_PDZZ, ZMZM_PRHODJ,  &
-                ZK,                                            &
-                PRHODJ,PTHVREF,                                & 
-                PSFTHM,PSFRM,PSFSVM,                           &
-                PCDUEFF,PTAU11M,PTAU12M,PTAU22M,PTAU33M,       &
-                PUM,PVM,PWM,PUSLOPEM,PVSLOPEM,PTHLM,PRM,PSVM,  &
-                PTKEM,PLM,PLEPS,                               &
-                PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE,     &
-                PDP,PTP,PSIGS,                                 &
-                PRUS,PRVS,PRWS,PRTHLS,PRRS,PRSVS               )
-
-! horizontal transport of Tke
-!
-
-  CALL   TURB_HOR_TKE(1,                                             &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      ZINV_PDXX, ZINV_PDYY, ZINV_PDZZ, ZMZM_PRHODJ,  &
-                      ZK, PRHODJ, PTKEM,                             &
-                      PTRH                                           )
-!
-END IF
-!--------------------------------------------------------------------
-!
-DEALLOCATE(ZK)
-DEALLOCATE(ZINV_PDXX)
-DEALLOCATE(ZINV_PDYY)
-DEALLOCATE(ZINV_PDZZ)
-DEALLOCATE(ZMZM_PRHODJ)
-!
-END SUBROUTINE TURB_HOR_SPLT
-END MODULE MODE_TURB_HOR_SPLT
diff --git a/src/common/turb/mode_turb_hor_sv_corr.F90 b/src/common/turb/mode_turb_hor_sv_corr.F90
deleted file mode 100644
index ef090e077..000000000
--- a/src/common/turb/mode_turb_hor_sv_corr.F90
+++ /dev/null
@@ -1,185 +0,0 @@
-!MNH_LIC Copyright 2002-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 MODE_TURB_HOR_SV_CORR
-IMPLICIT NONE
-CONTAINS
-      SUBROUTINE TURB_HOR_SV_CORR(KRR,KRRL,KRRI,                     &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PLM,PLEPS,PTKEM,PTHVREF,                       &
-                      PTHLM,PRM,                                     &
-                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,               &
-                      PWM,PSVM                                       )
-!     ################################################################
-!
-!
-!!****  *TURB_HOT_SV_CORR*  computes subgrid Sv2 and SvThv terms
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!     see TURB_HOR
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!      V. Masson               * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!   Original  06/11/02
-!!      JP Pinty       Feb 20, 2003 Add PFRAC_ICE
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_PARAMETERS
-USE MODD_NSV, ONLY : NSV,NSV_LGBEG,NSV_LGEND
-USE MODD_LES
-USE MODD_BLOWSNOW
-!
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_SHUMAN 
-USE MODI_LES_MEAN_SUBGRID
-USE MODE_EMOIST, ONLY: EMOIST
-USE MODE_ETHETA, ONLY: ETHETA
-!
-USE MODI_SECOND_MNH
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-!
-INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-INTEGER,                  INTENT(IN)    ::  KRRL         ! number of liquid var.
-INTEGER,                  INTENT(IN)    ::  KRRI         ! number of ice var.
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLM          ! mixing length
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLEPS        ! dissipative length
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTKEM        ! tke
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTHVREF      ! reference Thv
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTHLM        ! potential temperature at t-Delta t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PRM          ! Mixing ratios at t-Delta t
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PATHETA      ! coefficients between 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PAMOIST      ! s and Thetal and Rnp
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PSRCM        ! normalized 
-                  ! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PWM          ! w at t-1
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PSVM         ! scalar var. at t-1
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3))       &
-                                     :: ZFLX, ZA
-!
-INTEGER             :: JSV          ! loop counter
-INTEGER             :: IKU
-!
-REAL :: ZTIME1, ZTIME2
-!
-REAL :: ZCSVD  = 1.2  ! constant for scalar variance dissipation
-REAL :: ZCTSVD = 2.4  ! constant for temperature - scalar covariance dissipation
-REAL :: ZCQSVD = 2.4  ! constant for humidity - scalar covariance dissipation
-!
-REAL :: ZCSV          !constant for the scalar flux 
-! ---------------------------------------------------------------------------
-!
-IKU=SIZE(PTKEM,3)
-CALL SECOND_MNH(ZTIME1)
-!
-IF(LBLOWSNOW) THEN
-! See Vionnet (PhD, 2012) for a complete discussion around the value of the Schmidt number for blowing snow variables        
-   ZCSV= XCHF/XRSNOW 
-ELSE
-   ZCSV= XCHF
-ENDIF
-!
-DO JSV=1,NSV
-!
-  IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE
-  !
-  ! variance Sv2
-  !
-  IF (LLES_CALL) THEN
-    IF (.NOT. L2D) THEN
-      ZFLX(:,:,:) =  ZCSV / ZCSVD * PLM(:,:,:) * PLEPS(:,:,:) *   &
-         (  GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)**2             &
-          + GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)**2 )
-    ELSE
-      ZFLX(:,:,:) =  ZCSV / ZCSVD * PLM(:,:,:) * PLEPS(:,:,:) *   &
-            GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)**2
-    END IF
-    CALL LES_MEAN_SUBGRID( -2.*ZCSVD*SQRT(PTKEM)*ZFLX/PLEPS, &
-                           X_LES_SUBGRID_DISS_Sv2(:,:,:,JSV), .TRUE. )
-    CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX, X_LES_RES_W_SBG_Sv2(:,:,:,JSV), .TRUE. )
-  END IF
-  !
-  ! covariance SvThv
-  !
-  IF (LLES_CALL) THEN
-    ZA(:,:,:)   =  ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM)
-    IF (.NOT. L2D) THEN
-      ZFLX(:,:,:)=  PLM(:,:,:) * PLEPS(:,:,:)                                          &
-          *  (  GX_M_M(PTHLM,PDXX,PDZZ,PDZX) * GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)  &
-              + GY_M_M(PTHLM,PDYY,PDZZ,PDZY) * GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)  &
-             ) * (XCSHF+ZCSV) / (2.*ZCTSVD)
-    ELSE
-      ZFLX(:,:,:)=  PLM(:,:,:) * PLEPS(:,:,:)                                          &
-              * GX_M_M(PTHLM,PDXX,PDZZ,PDZX) * GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)  &
-              * (XCSHF+ZCSV) / (2.*ZCTSVD)
-    END IF
-    CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_SvThv(:,:,:,JSV) , .TRUE.)
-    CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE. )
-    !
-    IF (KRR>=1) THEN
-      ZA(:,:,:)   =  EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM)
-      IF (.NOT. L2D) THEN
-        ZFLX(:,:,:)=  PLM(:,:,:) * PLEPS(:,:,:)                                                 &
-            *  (  GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX) * GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)  &
-                + GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY) * GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)  &
-               ) * (XCHF+ZCSV) / (2.*ZCQSVD)
-      ELSE
-        ZFLX(:,:,:)=  PLM(:,:,:) * PLEPS(:,:,:)                                                 &
-                * GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX) * GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)  &
-                * (XCHF+ZCSV) / (2.*ZCQSVD)
-      END IF
-      CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_SvThv(:,:,:,JSV) , .TRUE.)
-      CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_SvPz(:,:,:,JSV), .TRUE. )
-    END IF
-  END IF
-!
-END DO    ! end loop JSV
-!
-CALL SECOND_MNH(ZTIME2)
-XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-!
-END SUBROUTINE TURB_HOR_SV_CORR
-END MODULE MODE_TURB_HOR_SV_CORR
-
diff --git a/src/common/turb/mode_turb_hor_sv_flux.F90 b/src/common/turb/mode_turb_hor_sv_flux.F90
deleted file mode 100644
index f61a531d9..000000000
--- a/src/common/turb/mode_turb_hor_sv_flux.F90
+++ /dev/null
@@ -1,315 +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 MODE_TURB_HOR_SV_FLUX
-IMPLICIT NONE
-CONTAINS
-      SUBROUTINE TURB_HOR_SV_FLUX(KSPLT,                             &
-                      OTURB_FLX,                                     &
-                      TPFILE,                                        &
-                      PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PDIRCOSXW,PDIRCOSYW,                           &
-                      PRHODJ,PWM,                                    &
-                      PSFSVM,                                        &
-                      PSVM,                                          &
-                      PRSVS                                          )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!     see TURB_HOR
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!                     Aug    , 1997 (V. Saravane) spliting of TURB_HOR
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Oct  18, 2000 (V. Masson) LES computations + LFLAT swith
-!!                                              + bug on Y scalar flux
-!!                     Jun  20, 2001 (J Stein) case of lagragian variables
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
-!!                                              change of YCOMMENT
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_PARAMETERS
-USE MODD_NSV,            ONLY: NSV_LGBEG, NSV_LGEND
-USE MODD_LES
-USE MODD_BLOWSNOW
-!
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-!
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_SHUMAN 
-USE MODE_COEFJ, ONLY: COEFJ
-USE MODI_LES_MEAN_SUBGRID
-!
-USE MODI_SECOND_MNH
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-!
-INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
-LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PK          ! Turbulent diffusion doef.
-                                                        ! PK = PLM * SQRT(PTKEM)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDXX   ! 1./PDXX
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDYY   ! 1./PDYY
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDZZ   ! 1./PDZZ
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PMZM_PRHODJ ! MZM(PRHODJ)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PDIRCOSXW, PDIRCOSYW
-! Director Cosinus along x and y  directions at surface w-point
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRHODJ       ! density * grid volume
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PWM          ! vertical wind
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PSFSVM       ! surface fluxes
-!
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PSVM         ! scalar var. at t-1
-!
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRSVS        ! var. at t+1 -split-
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),SIZE(PSVM,3))       &
-                                     :: ZFLXX,ZFLXY
-    ! work arrays
-REAL, DIMENSION(SIZE(PSVM,1),SIZE(PSVM,2),1) :: ZWORK2D
-!
-REAL :: ZCSV          !constant for the scalar flux
-
-INTEGER             :: IKB,IKE
-                                    ! Index values for the Beginning and End
-                                    ! mass points of the domain  
-INTEGER             :: JSV          ! loop counter
-INTEGER             :: ISV          ! number of scalar var.
-REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
-                                    ! coefficients for the uncentred gradient 
-                                    ! computation near the ground
-!
-INTEGER :: IKU
-TYPE(TFIELDDATA) :: TZFIELD
-REAL :: ZTIME1, ZTIME2
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-IKB = 1+JPVEXT               
-IKE = SIZE(PSVM,3)-JPVEXT   
-IKU = SIZE(PSVM,3)
-!
-ISV = SIZE(PSVM,4)
-!
-IF(LBLOWSNOW) THEN
-! See Vionnet (PhD, 2012) for a complete discussion around the value of the Schmidt number for blowing snow variables              
-   ZCSV= XCHF/XRSNOW
-ELSE
-   ZCSV= XCHF
-ENDIF
-!
-!  compute the coefficients for the uncentred gradient computation near the 
-!  ground
-ZCOEFF(:,:,IKB+2)= - PDZZ(:,:,IKB+1) /      &
-       ( (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) * PDZZ(:,:,IKB+2) )
-ZCOEFF(:,:,IKB+1)=   (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) /      &
-       ( PDZZ(:,:,IKB+1) * PDZZ(:,:,IKB+2) )
-ZCOEFF(:,:,IKB)= - (PDZZ(:,:,IKB+2)+2.*PDZZ(:,:,IKB+1)) /      &
-       ( (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) * PDZZ(:,:,IKB+1) )
-!
-!
-!*      15.   HORIZONTAL FLUXES OF PASSIVE SCALARS
-!             ------------------------------------
-!
-!
-DO JSV=1,ISV
-!
-  IF (LNOMIXLG .AND. JSV >= NSV_LGBEG .AND. JSV<= NSV_LGEND) CYCLE
-!
-!       15.1   <U' SVth'>
-!              ----------
-!
-  ! Computes the flux in the X direction
-  ZFLXX(:,:,:) = -ZCSV * MXM(PK) * GX_M_U(1,IKU,1,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)
-  ZFLXX(:,:,IKE+1) = ZFLXX(:,:,IKE) 
-!
-! Compute the flux at the first inner U-point with an uncentred vertical  
-! gradient
-  ZFLXX(:,:,IKB:IKB) = -ZCSV * MXM( PK(:,:,IKB:IKB) ) *             &
-    ( DXM(PSVM(:,:,IKB:IKB,JSV)) * PINV_PDXX(:,:,IKB:IKB)           &
-     -MXM ( ZCOEFF(:,:,IKB+2:IKB+2)*PSVM(:,:,IKB+2:IKB+2,JSV)       &
-           +ZCOEFF(:,:,IKB+1:IKB+1)*PSVM(:,:,IKB+1:IKB+1,JSV)       &
-           +ZCOEFF(:,:,IKB  :IKB  )*PSVM(:,:,IKB  :IKB  ,JSV)       &
-          ) * 0.5 * ( PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB) )     &
-            * PINV_PDXX(:,:,IKB:IKB)                                &
-    ) 
-! extrapolates the flux under the ground so that the vertical average with 
-! the IKB flux gives the ground value
-  ZWORK2D(:,:,1)=PSFSVM(:,:,JSV) * PDIRCOSXW(:,:)
-  ZFLXX(:,:,IKB-1:IKB-1) = 2. * MXM( ZWORK2D(:,:,1:1) ) - ZFLXX(:,:,IKB:IKB)
-  !
-  ! stores  <U SVth>
-  IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-    WRITE(TZFIELD%CMNHNAME,'("USV_FLX_",I3.3)') JSV
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-    TZFIELD%CUNITS     = 'SVUNIT m s-1'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME)
-    TZFIELD%NGRID      = 2
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLXX)
-  END IF
-!
-  IF (LLES_CALL .AND. KSPLT==1) THEN
-    CALL SECOND_MNH(ZTIME1)
-    CALL LES_MEAN_SUBGRID( MXF(ZFLXX), X_LES_SUBGRID_USv(:,:,:,JSV) ) 
-    CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW(PWM,PDXX,PDZZ,PDZX)*MZM(ZFLXX))), &
-                           X_LES_RES_ddxa_W_SBG_UaSv(:,:,:,JSV) , .TRUE. )
-    CALL LES_MEAN_SUBGRID( GX_M_M(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)*MXF(ZFLXX), &
-                           X_LES_RES_ddxa_Sv_SBG_UaSv(:,:,:,JSV), .TRUE. )
-    CALL SECOND_MNH(ZTIME2)
-    XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-  END IF
-!
-!       15.2   <V' SVth'>
-!              ----------
-!
-  IF (.NOT. L2D) THEN
-!
-! Computes the flux in the Y direction
-    ZFLXY(:,:,:)=-ZCSV * MYM(PK) * GY_M_V(1,IKU,1,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)
-    ZFLXY(:,:,IKE+1) = ZFLXY(:,:,IKE) 
-!
-! Compute the flux at the first inner V-point with an uncentred vertical  
-! gradient
-!
-    ZFLXY(:,:,IKB:IKB) = -ZCSV * MYM( PK(:,:,IKB:IKB) ) *             &
-      ( DYM(PSVM(:,:,IKB:IKB,JSV)) * PINV_PDYY(:,:,IKB:IKB)           &
-       -MYM ( ZCOEFF(:,:,IKB+2:IKB+2)*PSVM(:,:,IKB+2:IKB+2,JSV)       &
-             +ZCOEFF(:,:,IKB+1:IKB+1)*PSVM(:,:,IKB+1:IKB+1,JSV)       &
-             +ZCOEFF(:,:,IKB  :IKB  )*PSVM(:,:,IKB  :IKB  ,JSV)       &
-            ) * 0.5 * ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB) )     &
-              * PINV_PDYY(:,:,IKB:IKB)                                &
-      ) 
-! extrapolates the flux under the ground so that the vertical average with 
-! the IKB flux gives the ground value
-    ZWORK2D(:,:,1)=PSFSVM(:,:,JSV) * PDIRCOSYW(:,:)
-    ZFLXY(:,:,IKB-1:IKB-1) = 2. * MYM( ZWORK2D(:,:,1:1) ) - ZFLXY(:,:,IKB:IKB)
-  !
-  ! stores  <V SVth>
-    IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-      WRITE(TZFIELD%CMNHNAME,'("VSV_FLX_",I3.3)') JSV
-      TZFIELD%CSTDNAME   = ''
-      TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-      TZFIELD%CUNITS     = 'SVUNIT m s-1'
-      TZFIELD%CDIR       = 'XY'
-      TZFIELD%CCOMMENT   = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME)
-      TZFIELD%NGRID      = 3
-      TZFIELD%NTYPE      = TYPEREAL
-      TZFIELD%NDIMS      = 3
-      TZFIELD%LTIMEDEP   = .TRUE.
-      CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLXY)
-    END IF
-!
-  ELSE
-    ZFLXY=0.
-  END IF
-!
-  IF (LLES_CALL .AND. KSPLT==1) THEN
-    CALL SECOND_MNH(ZTIME1)
-    CALL LES_MEAN_SUBGRID( MYF(ZFLXY), X_LES_SUBGRID_VSv(:,:,:,JSV) ) 
-    CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(PWM,PDYY,PDZZ,PDZY)*MZM(ZFLXY))), &
-                           X_LES_RES_ddxa_W_SBG_UaSv(:,:,:,JSV) , .TRUE. )
-    CALL LES_MEAN_SUBGRID( GY_M_M(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)*MYF(ZFLXY), &
-                           X_LES_RES_ddxa_Sv_SBG_UaSv(:,:,:,JSV) , .TRUE. )
-    CALL SECOND_MNH(ZTIME2)
-    XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-  END IF
-!
-!
-!       15.3   Horizontal source terms
-!              -----------------------
-!
-  IF (.NOT. L2D) THEN
-    IF (.NOT. LFLAT) THEN
-      PRSVS(:,:,:,JSV)=   PRSVS(:,:,:,JSV)                                          &
-        -DXF( MXM(PRHODJ) * ZFLXX * PINV_PDXX  )                                    &
-        -DYF( MYM(PRHODJ) * ZFLXY * PINV_PDYY  )                                    &
-        +DZF( PMZM_PRHODJ * PINV_PDZZ *                                             &
-              ( MXF( MZM(ZFLXX * PINV_PDXX) * PDZX ) + MYF( MZM(ZFLXY * PINV_PDYY) * PDZY ) ) &
-            )
-    ELSE
-      PRSVS(:,:,:,JSV)=   PRSVS(:,:,:,JSV)                                          &
-        -DXF( MXM(PRHODJ) * ZFLXX * PINV_PDXX  )                                    &
-        -DYF( MYM(PRHODJ) * ZFLXY * PINV_PDYY  )
-    END IF
-  ELSE
-    IF (.NOT. LFLAT) THEN
-      PRSVS(:,:,:,JSV)=   PRSVS(:,:,:,JSV)                                          &
-        -DXF( MXM(PRHODJ) * ZFLXX * PINV_PDXX  )                                    &
-        +DZF( PMZM_PRHODJ * PINV_PDZZ *                                             &
-              ( MXF( MZM(ZFLXX * PINV_PDXX) * PDZX ) )                              &
-            )
-    ELSE
-      PRSVS(:,:,:,JSV)=   PRSVS(:,:,:,JSV)                                          &
-        -DXF( MXM(PRHODJ) *ZFLXX * PINV_PDXX  )
-    END IF
-  END IF
-!
-!
-END DO    ! end loop JSV
-!
-!
-END SUBROUTINE TURB_HOR_SV_FLUX
-END MODULE MODE_TURB_HOR_SV_FLUX
diff --git a/src/common/turb/mode_turb_hor_thermo_corr.F90 b/src/common/turb/mode_turb_hor_thermo_corr.F90
deleted file mode 100644
index f844fbabd..000000000
--- a/src/common/turb/mode_turb_hor_thermo_corr.F90
+++ /dev/null
@@ -1,409 +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 MODE_TURB_HOR_THERMO_CORR
-IMPLICIT NONE
-CONTAINS
-      SUBROUTINE TURB_HOR_THERMO_CORR(KRR, KRRL, KRRI,               &
-                      OTURB_FLX,OSUBG_COND,                          &
-                      TPFILE,                                        &
-                      PINV_PDXX,PINV_PDYY,                           &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PTHVREF,                                       &
-                      PWM,PTHLM,PRM,                                 &
-                      PTKEM,PLM,PLEPS,                               &
-                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,               &
-                      PSIGS                                          )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!     see TURB_HOR
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!                     Aug    , 1997 (V. Saravane) spliting of TURB_HOR
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!                     Feb  20, 2003 (JP Pinty) Add PFRAC_ICE
-!!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
-!!                                              change of YCOMMENT
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_PARAMETERS
-USE MODD_LES
-!
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-!
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_SHUMAN 
-USE MODI_LES_MEAN_SUBGRID
-!
-USE MODE_EMOIST, ONLY: EMOIST
-USE MODE_ETHETA, ONLY: ETHETA
-!
-USE MODI_SECOND_MNH
-!
-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)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid
-!                                                    condensation
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDXX   ! 1./PDXX
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDYY   ! 1./PDYY
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! ref. state Virtual 
-                                                      ! Potential Temperature
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PWM 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTHLM 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PRM          ! mixing ratios at t-1,
-                              !  where PRM(:,:,:,1) = conservative mixing ratio
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTKEM        ! Turb. Kin. Energy
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLM          ! Turb. mixing length
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLEPS        ! dissipative length
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM        ! normalized 
-!
-!
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PSIGS
-                                  ! IN: Vertical part of Sigma_s at t
-                                  ! OUT: Total Sigma_s at t
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))       &
-                                     :: ZFLX,ZWORK,ZA
-    ! work arrays
-!   
-INTEGER             :: IKB,IKE
-                                    ! Index values for the Beginning and End
-                                    ! mass points of the domain  
-REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
-                                    ! coefficients for the uncentred gradient 
-                                    ! computation near the ground
-REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
-!
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-IKB = 1+JPVEXT               
-IKE = SIZE(PTHLM,3)-JPVEXT   
-!
-!
-!
-!  compute the coefficients for the uncentred gradient computation near the 
-!  ground
-ZCOEFF(:,:,IKB+2)= - PDZZ(:,:,IKB+1) /      &
-       ( (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) * PDZZ(:,:,IKB+2) )
-ZCOEFF(:,:,IKB+1)=   (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) /      &
-       ( PDZZ(:,:,IKB+1) * PDZZ(:,:,IKB+2) )
-ZCOEFF(:,:,IKB)= - (PDZZ(:,:,IKB+2)+2.*PDZZ(:,:,IKB+1)) /      &
-       ( (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) * PDZZ(:,:,IKB+1) )
-!
-!
-!*       8.   TURBULENT CORRELATIONS : <THl THl>, <THl Rnp>, <Rnp Rnp>, Sigma_s
-!             -----------------------------------------------------------------
-!
-!
-!
-IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. TPFILE%LOPENED ) &
-                                  .OR. ( LLES_CALL )                  ) THEN
-!
-!*       8.1  <THl THl>
-!
-  ! Computes the horizontal variance <THl THl>
-  IF (.NOT. L2D) THEN
-    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) *                           &
-       ( GX_M_M(PTHLM,PDXX,PDZZ,PDZX)**2 + GY_M_M(PTHLM,PDYY,PDZZ,PDZY)**2 )
-  ELSE
-    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) *                           &
-         GX_M_M(PTHLM,PDXX,PDZZ,PDZX)**2
-  END IF
-!
-! Compute the flux at the first inner U-point with an uncentred vertical  
-! gradient
-!
-  ZFLX(:,:,IKB:IKB) = XCTV * PLM(:,:,IKB:IKB)                  &
-  * PLEPS(:,:,IKB:IKB) *  (                                    &
-  ( MXF(DXM(PTHLM(:,:,IKB:IKB)) * PINV_PDXX(:,:,IKB:IKB))      &
-   - ( ZCOEFF(:,:,IKB+2:IKB+2)*PTHLM(:,:,IKB+2:IKB+2)          &
-      +ZCOEFF(:,:,IKB+1:IKB+1)*PTHLM(:,:,IKB+1:IKB+1)          &
-      +ZCOEFF(:,:,IKB  :IKB  )*PTHLM(:,:,IKB  :IKB  )          &
-     ) * 0.5 * ( PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB) )     &
-     / MXF(PDXX(:,:,IKB:IKB))                                  &
-  ) ** 2 +                                                     &
-  ( MYF(DYM(PTHLM(:,:,IKB:IKB)) * PINV_PDYY(:,:,IKB:IKB))      &
-   - ( ZCOEFF(:,:,IKB+2:IKB+2)*PTHLM(:,:,IKB+2:IKB+2)          &
-      +ZCOEFF(:,:,IKB+1:IKB+1)*PTHLM(:,:,IKB+1:IKB+1)          &
-      +ZCOEFF(:,:,IKB  :IKB  )*PTHLM(:,:,IKB  :IKB  )          &
-     ) * 0.5 * ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB) )     &
-     / MYF(PDYY(:,:,IKB:IKB))                                  &
-  ) ** 2                                             )
-  !
-  ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB)
-  !
-  IF ( KRRL > 0 ) THEN
-    ZWORK(:,:,:) = ZFLX(:,:,:) * PATHETA(:,:,:) * PATHETA(:,:,:)
-  END IF
-  !
-  ! stores <THl THl>
-  IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
-    TZFIELD%CMNHNAME   = 'THL_HVAR'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'THL_HVAR'
-    TZFIELD%CUNITS     = 'K2'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_THL_HVAR'
-    TZFIELD%NGRID      = 1
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-  END IF
-!
-! Storage in the LES configuration (addition to TURB_VER computation)
-!
-  IF (LLES_CALL) THEN
-    CALL SECOND_MNH(ZTIME1)
-    CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_Thl2, .TRUE. ) 
-    CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX, X_LES_RES_W_SBG_Thl2, .TRUE. )
-    CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM)*ZFLX/PLEPS ,X_LES_SUBGRID_DISS_Thl2, .TRUE. )
-    ZA(:,:,:)   =  ETHETA(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM)
-    CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_ThlThv, .TRUE. ) 
-    CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_ThlPz, .TRUE. )
-    CALL SECOND_MNH(ZTIME2)
-    XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-  END IF
-!
-  IF ( KRR /= 0 ) THEN
-!
-!*       8.3  <THl Rnp>
-!
-    ! Computes the horizontal correlation <THl Rnp>
-    IF (.NOT. L2D) THEN
-      ZFLX(:,:,:)=                                                               &
-            PLM(:,:,:) * PLEPS(:,:,:) *                                          &
-            (GX_M_M(PTHLM,PDXX,PDZZ,PDZX) * GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX)  &
-           + GY_M_M(PTHLM,PDYY,PDZZ,PDZY) * GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY)  &
-            ) * (XCHT1+XCHT2)
-    ELSE
-      ZFLX(:,:,:)=                                                               &
-            PLM(:,:,:) * PLEPS(:,:,:) *                                          &
-            (GX_M_M(PTHLM,PDXX,PDZZ,PDZX) * GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX)  &
-            ) * (XCHT1+XCHT2)
-
-    END IF
-!
-! Compute the flux at the first inner U-point with an uncentred vertical  
-! gradient
-    ZFLX(:,:,IKB:IKB) = (XCHT1+XCHT2) * PLM(:,:,IKB:IKB)         &
-    * PLEPS(:,:,IKB:IKB)  *  (                                   &
-    ( MXF(DXM(PTHLM(:,:,IKB:IKB)) * PINV_PDXX(:,:,IKB:IKB))      &
-     - ( ZCOEFF(:,:,IKB+2:IKB+2)*PTHLM(:,:,IKB+2:IKB+2)          &
-        +ZCOEFF(:,:,IKB+1:IKB+1)*PTHLM(:,:,IKB+1:IKB+1)          &
-        +ZCOEFF(:,:,IKB  :IKB  )*PTHLM(:,:,IKB  :IKB  )          &
-       ) * 0.5 * ( PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB) )     &
-       / MXF(PDXX(:,:,IKB:IKB))                                  &
-    ) *                                                          &
-    ( MXF(DXM(PRM(:,:,IKB:IKB,1)) * PINV_PDXX(:,:,IKB:IKB))      &
-     - ( ZCOEFF(:,:,IKB+2:IKB+2)*PRM(:,:,IKB+2:IKB+2,1)          &
-        +ZCOEFF(:,:,IKB+1:IKB+1)*PRM(:,:,IKB+1:IKB+1,1)          &
-        +ZCOEFF(:,:,IKB  :IKB  )*PRM(:,:,IKB  :IKB  ,1)          &
-       ) * 0.5 * ( PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB) )     &
-       / MXF(PDXX(:,:,IKB:IKB))                                  &
-    ) +                                                          &
-    ( MYF(DYM(PTHLM(:,:,IKB:IKB)) * PINV_PDYY(:,:,IKB:IKB))      &
-     - ( ZCOEFF(:,:,IKB+2:IKB+2)*PTHLM(:,:,IKB+2:IKB+2)          &
-        +ZCOEFF(:,:,IKB+1:IKB+1)*PTHLM(:,:,IKB+1:IKB+1)          &
-        +ZCOEFF(:,:,IKB  :IKB  )*PTHLM(:,:,IKB  :IKB  )          &
-       ) * 0.5 * ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB) )     &
-       / MYF(PDYY(:,:,IKB:IKB))                                  &
-    ) *                                                          &
-    ( MYF(DYM(PRM(:,:,IKB:IKB,1)) * PINV_PDYY(:,:,IKB:IKB))           &
-     - ( ZCOEFF(:,:,IKB+2:IKB+2)*PRM(:,:,IKB+2:IKB+2,1)          &
-        +ZCOEFF(:,:,IKB+1:IKB+1)*PRM(:,:,IKB+1:IKB+1,1)          &
-        +ZCOEFF(:,:,IKB  :IKB  )*PRM(:,:,IKB  :IKB  ,1)          &
-       ) * 0.5 * ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB) )     &
-       / MYF(PDYY(:,:,IKB:IKB))                                  &
-    )                                                          )
-    !
-    ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB)
-    !
-    IF ( KRRL > 0 )  THEN
-      ZWORK(:,:,:) = ZWORK(:,:,:) +       &
-                     2. * PATHETA(:,:,:) * PAMOIST(:,:,:) * ZFLX(:,:,:)    
-    END IF                    
-    !
-    ! stores <THl Rnp>
-    IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
-      TZFIELD%CMNHNAME   = 'THLR_HCOR'
-      TZFIELD%CSTDNAME   = ''
-      TZFIELD%CLONGNAME  = 'THLR_HCOR'
-      TZFIELD%CUNITS     = 'K kg kg-1'
-      TZFIELD%CDIR       = 'XY'
-      TZFIELD%CCOMMENT   = 'X_Y_Z_THLR_HCOR'
-      TZFIELD%NGRID      = 1
-      TZFIELD%NTYPE      = TYPEREAL
-      TZFIELD%NDIMS      = 3
-      TZFIELD%LTIMEDEP   = .TRUE.
-      CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-    END IF
-!
-!   Storage in the LES configuration (addition to TURB_VER computation)
-!
-    IF (LLES_CALL) THEN
-      CALL SECOND_MNH(ZTIME1)
-      CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_ThlRt, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX, X_LES_RES_W_SBG_ThlRt, .TRUE. )
-      CALL LES_MEAN_SUBGRID( -XCTD*SQRT(PTKEM)*ZFLX/PLEPS ,X_LES_SUBGRID_DISS_ThlRt, .TRUE. )
-      CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_RtThv, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_RtPz,.TRUE.)
-      ZA(:,:,:)   =  EMOIST(KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM)
-      CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_ThlThv, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_ThlPz,.TRUE.)
-      CALL SECOND_MNH(ZTIME2)
-      XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-    END IF
-!
-!*       8.4  <Rnp Rnp>
-!
-    ! Computes the horizontal variance <Rnp Rnp>
-    IF (.NOT. L2D) THEN
-      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) *                      &
-           ( GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX)**2 +                       &
-             GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY)**2 )
-    ELSE
-      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) *                      &
-           ( GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX)**2  )
-    END IF
-!
-! Compute the flux at the first inner U-point with an uncentred vertical  
-! gradient
-    ZFLX(:,:,IKB:IKB) = XCHV * PLM(:,:,IKB:IKB)                  &
-    * PLEPS(:,:,IKB:IKB) *  (                                    &
-    ( MXF(DXM(PRM(:,:,IKB:IKB,1)) * PINV_PDXX(:,:,IKB:IKB))      &
-     - ( ZCOEFF(:,:,IKB+2:IKB+2)*PRM(:,:,IKB+2:IKB+2,1)          &
-        +ZCOEFF(:,:,IKB+1:IKB+1)*PRM(:,:,IKB+1:IKB+1,1)          &
-        +ZCOEFF(:,:,IKB  :IKB  )*PRM(:,:,IKB  :IKB  ,1)          &
-       ) * 0.5 * ( PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB) )     &
-       / MXF(PDXX(:,:,IKB:IKB))                                  &
-    ) ** 2 +                                                     &
-    ( MYF(DYM(PRM(:,:,IKB:IKB,1)) * PINV_PDYY(:,:,IKB:IKB))           &
-     - ( ZCOEFF(:,:,IKB+2:IKB+2)*PRM(:,:,IKB+2:IKB+2,1)          &
-        +ZCOEFF(:,:,IKB+1:IKB+1)*PRM(:,:,IKB+1:IKB+1,1)          &
-        +ZCOEFF(:,:,IKB  :IKB  )*PRM(:,:,IKB  :IKB  ,1)          &
-       ) * 0.5 * ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB) )     &
-       / MYF(PDYY(:,:,IKB:IKB))                                  &
-    ) ** 2                                             )
-!
-    ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB)
-    !
-    IF ( KRRL > 0 ) THEN       
-      ZWORK(:,:,:) = ZWORK(:,:,:)+ PAMOIST(:,:,:) * PAMOIST(:,:,:) * ZFLX(:,:,:)
-    END IF
-    !
-    ! stores <Rnp Rnp>
-    IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
-      TZFIELD%CMNHNAME   = 'R_HVAR'
-      TZFIELD%CSTDNAME   = ''
-      TZFIELD%CLONGNAME  = 'R_HVAR'
-      TZFIELD%CUNITS     = 'kg2 kg-2'
-      TZFIELD%CDIR       = 'XY'
-      TZFIELD%CCOMMENT   = 'X_Y_Z_R_HVAR'
-      TZFIELD%NGRID      = 1
-      TZFIELD%NTYPE      = TYPEREAL
-      TZFIELD%NDIMS      = 3
-      TZFIELD%LTIMEDEP   = .TRUE.
-      CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-    END IF
-    !
-    !   Storage in the LES configuration (addition to TURB_VER computation)
-    !
-    IF (LLES_CALL) THEN
-      CALL SECOND_MNH(ZTIME1)
-      CALL LES_MEAN_SUBGRID( ZFLX, X_LES_SUBGRID_Rt2, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( MZF(PWM)*ZFLX, X_LES_RES_W_SBG_Rt2, .TRUE. )
-      CALL LES_MEAN_SUBGRID( ZA*ZFLX, X_LES_SUBGRID_RtThv, .TRUE. ) 
-      CALL LES_MEAN_SUBGRID( -XG/PTHVREF/3.*ZA*ZFLX, X_LES_SUBGRID_RtPz,.TRUE.)
-      CALL LES_MEAN_SUBGRID( -2.*XCTD*SQRT(PTKEM)*ZFLX/PLEPS, X_LES_SUBGRID_DISS_Rt2, .TRUE. )
-      CALL SECOND_MNH(ZTIME2)
-      XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-    END IF
-  !
-  END IF
-!
-!        8.5 Complete the Sigma_s computation:
-!
-  IF ( KRRL > 0 ) THEN   
-    !
-    PSIGS(:,:,:)=PSIGS(:,:,:)*PSIGS(:,:,:) + ZWORK(:,:,:)
-    ! Extrapolate PSIGS at the ground and at the top
-    PSIGS(:,:,IKB-1) = PSIGS(:,:,IKB)
-    PSIGS(:,:,IKE+1) = PSIGS(:,:,IKE)
-    PSIGS(:,:,:) = SQRT(MAX ( PSIGS(:,:,:),1.E-12) ) 
-  END IF       
-!
-END IF
-!
-!
-!
-END SUBROUTINE TURB_HOR_THERMO_CORR
-END MODULE MODE_TURB_HOR_THERMO_CORR
diff --git a/src/common/turb/mode_turb_hor_thermo_flux.F90 b/src/common/turb/mode_turb_hor_thermo_flux.F90
deleted file mode 100644
index 97a74596e..000000000
--- a/src/common/turb/mode_turb_hor_thermo_flux.F90
+++ /dev/null
@@ -1,688 +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 MODE_TURB_HOR_THERMO_FLUX
-IMPLICIT NONE
-CONTAINS
-!     ################################################################
-      SUBROUTINE TURB_HOR_THERMO_FLUX(KSPLT, KRR, KRRL, KRRI,        &
-                      OTURB_FLX,OSUBG_COND,                          &
-                      TPFILE,                                        &
-                      PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PDIRCOSXW,PDIRCOSYW,                           &
-                      PRHODJ,                                        &
-                      PSFTHM,PSFRM,                                  &
-                      PWM,PTHLM,PRM,                                 &
-                      PATHETA,PAMOIST,PSRCM,PFRAC_ICE,               &
-                      PRTHLS,PRRS                                    )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!     see TURB_HOR
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!                     Aug    , 1997 (V. Saravane) spliting of TURB_HOR
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Feb. 18, 1998 (J. Stein) bug for v'RC'
-!!                     Oct  18, 2000 (V. Masson) LES computations + LFLAT switch
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!                     Feb  20, 2003 (JP Pinty)  Add PFRAC_ICE
-!!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
-!!                                              change of YCOMMENT
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_PARAMETERS
-USE MODD_LES
-!
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-!
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_SHUMAN 
-USE MODI_LES_MEAN_SUBGRID
-!!USE MODE_EMOIST, ONLY: EMOIST
-!!USE MODE_ETHETA, ONLY: ETHETA
-!
-USE MODI_SECOND_MNH
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-!
-INTEGER,                  INTENT(IN)    :: KSPLT         ! split process index
-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)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-LOGICAL,                 INTENT(IN)  ::   OSUBG_COND ! Switch for sub-grid 
-!                                                    condensation
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PK          ! Turbulent diffusion doef.
-                                                        ! PK = PLM * SQRT(PTKEM)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDXX   ! 1./PDXX
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDYY   ! 1./PDYY
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDZZ   ! 1./PDZZ
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PMZM_PRHODJ ! MZM(PRHODJ)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PDIRCOSXW, PDIRCOSYW
-! Director Cosinus along x, y and z directions at surface w-point
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRHODJ       ! density * grid volume
-!
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PSFTHM,PSFRM
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PWM 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTHLM 
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PRM          ! mixing ratios at t-1,
-                              !  where PRM(:,:,:,1) = conservative mixing ratio
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PATHETA      ! coefficients between 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PAMOIST      ! s and Thetal and Rnp
-
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PSRCM
-                                  ! normalized 2nd-order flux
-                                  ! s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PFRAC_ICE    ! ri fraction of rc+ri
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRTHLS
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) ::  PRRS         ! var. at t+1 -split-
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))       &
-                                     :: ZFLX,ZFLXC
-    ! work arrays
-!   
-!! REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  :: ZVPTV
-INTEGER             :: IKB,IKE,IKU
-                                    ! Index values for the Beginning and End
-                                    ! mass points of the domain  
-REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
-                                    ! coefficients for the uncentred gradient 
-                                    ! computation near the ground
-!
-REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-IKB = 1+JPVEXT               
-IKE = SIZE(PTHLM,3)-JPVEXT    
-IKU = SIZE(PTHLM,3)
-!
-!
-!  compute the coefficients for the uncentred gradient computation near the 
-!  ground
-ZCOEFF(:,:,IKB+2)= - PDZZ(:,:,IKB+1) /      &
-       ( (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) * PDZZ(:,:,IKB+2) )
-ZCOEFF(:,:,IKB+1)=   (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) /      &
-       ( PDZZ(:,:,IKB+1) * PDZZ(:,:,IKB+2) )
-ZCOEFF(:,:,IKB)= - (PDZZ(:,:,IKB+2)+2.*PDZZ(:,:,IKB+1)) /      &
-       ( (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) * PDZZ(:,:,IKB+1) )
-!
-!*       2.   < U' THETA'l >
-!             --------------
-!
-! 
-ZFLX(:,:,:)     = -XCSHF * MXM( PK ) * GX_M_U(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX)
-ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
-!
-! Compute the flux at the first inner U-point with an uncentred vertical  
-! gradient
-ZFLX(:,:,IKB:IKB) = -XCSHF * MXM( PK(:,:,IKB:IKB) ) *          &
-  ( DXM(PTHLM(:,:,IKB:IKB)) * PINV_PDXX(:,:,IKB:IKB)           &
-   -MXM( ZCOEFF(:,:,IKB+2:IKB+2)*PTHLM(:,:,IKB+2:IKB+2)        &
-         +ZCOEFF(:,:,IKB+1:IKB+1)*PTHLM(:,:,IKB+1:IKB+1)       &
-         +ZCOEFF(:,:,IKB  :IKB  )*PTHLM(:,:,IKB  :IKB  ))      &
-        *0.5* ( PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB))       &
-        * PINV_PDXX(:,:,IKB:IKB) )
-! extrapolates the flux under the ground so that the vertical average with 
-! the IKB flux gives the ground value  ( warning the tangential surface
-! flux has been set to 0 for the moment !!  to be improved )
-ZFLX(:,:,IKB-1:IKB-1) = 2. * MXM(  SPREAD( PSFTHM(:,:)* PDIRCOSXW(:,:), 3,1) )  &
-                       - ZFLX(:,:,IKB:IKB)
-!
-! Add this source to the Theta_l sources
-!
-IF (.NOT. LFLAT) THEN
-  PRTHLS(:,:,:) =  PRTHLS                                                   &
-                - DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX )                          &
-                + DZF( PMZM_PRHODJ *MXF(PDZX*(MZM(ZFLX * PINV_PDXX))) * PINV_PDZZ )
-ELSE
-  PRTHLS(:,:,:) =  PRTHLS - DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX )
-END IF
-!
-! Compute the equivalent tendancy for Rc and Ri
-!
-IF ( KRRL >= 1 ) THEN
-  IF (.NOT. LFLAT) THEN
-    ZFLXC = 2.*( MXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX )                       &
-                +MZF( MZM( PRHODJ*PATHETA*PSRCM )*MXF(                         &
-                                               PDZX*(MZM( ZFLX*PINV_PDXX )) ) )&
-               )
-    IF ( KRRI >= 1 ) THEN
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                    &
-        (- DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF( MZM( PRHODJ*PATHETA*PSRCM )*MXF( PDZX*(MZM( ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
-        )*(1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. *                                    &
-        (- DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF( MZM( PRHODJ*PATHETA*PSRCM )*MXF( PDZX*(MZM( ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
-        )*PFRAC_ICE(:,:,:)
-    ELSE
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                    &
-        (- DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF( MZM( PRHODJ*PATHETA*PSRCM )*MXF( PDZX*(MZM( ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
-        )
-    END IF
-  ELSE
-    ZFLXC = 2.*MXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX )
-    IF ( KRRI >= 1 ) THEN
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. *                                    &
-        DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )*(1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) -  2. *                                    &
-        DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )*PFRAC_ICE(:,:,:)
-    ELSE
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. *                                    &
-        DXF( MXM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDXX )
-    END IF
-  END IF
-END IF
-!
-!! stores this flux in ZWORK to compute later <U' VPT'>
-!!ZWORK(:,:,:) = ZFLX(:,:,:) 
-!
-! stores the horizontal  <U THl>
-IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-  TZFIELD%CMNHNAME   = 'UTHL_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'UTHL_FLX'
-  TZFIELD%CUNITS     = 'K m s-1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_UTHL_FLX'
-  TZFIELD%NGRID      = 2
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-END IF
-!
-IF (KSPLT==1 .AND. LLES_CALL) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( MXF(ZFLX), X_LES_SUBGRID_UThl ) 
-  CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW(PWM,PDXX,PDZZ,PDZX)*MZM(ZFLX))),&
-                         X_LES_RES_ddxa_W_SBG_UaThl , .TRUE. )
-  CALL LES_MEAN_SUBGRID( GX_M_M(PTHLM,PDXX,PDZZ,PDZX)*MXF(ZFLX),&
-                         X_LES_RES_ddxa_Thl_SBG_UaThl , .TRUE. )
-  IF (KRR>=1) THEN
-    CALL LES_MEAN_SUBGRID( GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX)*MXF(ZFLX), &
-                           X_LES_RES_ddxa_Rt_SBG_UaThl , .TRUE. )
-  END IF
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-!
-!*       3.   < U' R'np >
-!             -----------
-IF (KRR/=0) THEN
-  !
-  ZFLX(:,:,:)     = -XCHF * MXM( PK ) * GX_M_U(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX)
-  ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
-!
-! Compute the flux at the first inner U-point with an uncentred vertical  
-! gradient
-  ZFLX(:,:,IKB:IKB) = -XCHF * MXM( PK(:,:,IKB:IKB) ) *           &
-    ( DXM(PRM(:,:,IKB:IKB,1)) * PINV_PDXX(:,:,IKB:IKB)           &
-     -MXM( ZCOEFF(:,:,IKB+2:IKB+2)*PRM(:,:,IKB+2:IKB+2,1)        &
-           +ZCOEFF(:,:,IKB+1:IKB+1)*PRM(:,:,IKB+1:IKB+1,1)       &
-           +ZCOEFF(:,:,IKB  :IKB  )*PRM(:,:,IKB  :IKB  ,1))      &
-          *0.5* ( PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB))       &
-          * PINV_PDXX(:,:,IKB:IKB) )
-! extrapolates the flux under the ground so that the vertical average with 
-! the IKB flux gives the ground value  ( warning the tangential surface
-! flux has been set to 0 for the moment !!  to be improved )
-  ZFLX(:,:,IKB-1:IKB-1) = 2. * MXM(  SPREAD( PSFRM(:,:)* PDIRCOSXW(:,:), 3,1) ) &
-                       - ZFLX(:,:,IKB:IKB)
-  !
-  ! Add this source to the conservative mixing ratio sources
-  !
-  IF (.NOT. LFLAT) THEN
-    PRRS(:,:,:,1) = PRRS(:,:,:,1)                                             &
-                  - DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX )                          &
-                  + DZF( PMZM_PRHODJ *MXF(PDZX*(MZM(ZFLX * PINV_PDXX))) * PINV_PDZZ )
-  ELSE
-    PRRS(:,:,:,1) = PRRS(:,:,:,1) - DXF( MXM(PRHODJ) * ZFLX * PINV_PDXX )
-  END IF
-  !
-  ! Compute the equivalent tendancy for Rc and Ri
-  !
-  IF ( KRRL >= 1 ) THEN
-    IF (.NOT. LFLAT) THEN
-      ZFLXC = ZFLXC            &
-            + 2.*( MXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX )                     &
-                  +MZF( MZM( PRHODJ*PAMOIST*PSRCM )*MXF(                       &
-                                               PDZX*(MZM( ZFLX*PINV_PDXX )) ) )&
-                 )
-      IF ( KRRI >= 1 ) THEN
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF( MZM( PRHODJ*PAMOIST*PSRCM )*MXF( PDZX*(MZM( ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
-        )*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF( MZM( PRHODJ*PAMOIST*PSRCM )*MXF( PDZX*(MZM( ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
-        )*PFRAC_ICE(:,:,:)
-      ELSE
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )                   &
-         + DZF( MZM( PRHODJ*PAMOIST*PSRCM )*MXF( PDZX*(MZM( ZFLX*PINV_PDXX )) )&
-                                           *PINV_PDZZ )                        &
-        )
-      END IF
-    ELSE
-      ZFLXC = ZFLXC + 2.*MXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX )
-      IF ( KRRI >= 1 ) THEN
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. *                                  &
-        DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) -  2. *                                  &
-        DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )*PFRAC_ICE(:,:,:)
-      ELSE
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) -  2. *                                  &
-        DXF( MXM( PRHODJ*PAMOIST*PSRCM )*ZFLX*PINV_PDXX )
-      END IF
-    END IF
-  END IF
-  !
-  ! stores the horizontal  <U Rnp>
-  IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-    TZFIELD%CMNHNAME   = 'UR_FLX'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'UR_FLX'
-    TZFIELD%CUNITS     = 'kg kg-1 m s-1'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_UR_FLX'
-    TZFIELD%NGRID      = 2
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-  END IF
-  !
-  IF (KSPLT==1 .AND. LLES_CALL) THEN
-    CALL SECOND_MNH(ZTIME1)
-    CALL LES_MEAN_SUBGRID( MXF(ZFLX), X_LES_SUBGRID_URt ) 
-    CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW(PWM,PDXX,PDZZ,PDZX)*MZM(ZFLX))),&
-                           X_LES_RES_ddxa_W_SBG_UaRt , .TRUE. )
-    CALL LES_MEAN_SUBGRID( GX_M_M(PTHLM,PDXX,PDZZ,PDZX)*MXF(ZFLX),&
-                           X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. )
-    CALL LES_MEAN_SUBGRID( GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX)*MXF(ZFLX),&
-                           X_LES_RES_ddxa_Rt_SBG_UaRt , .TRUE. )
-    CALL SECOND_MNH(ZTIME2)
-    XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-  END IF
-!
-  !
-  IF (KRRL>0 .AND. KSPLT==1 .AND. LLES_CALL) THEN
-    CALL SECOND_MNH(ZTIME1)
-    CALL LES_MEAN_SUBGRID(MXF(ZFLXC), X_LES_SUBGRID_URc )
-    CALL SECOND_MNH(ZTIME2)
-    XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-  END IF
-!
-END IF 
-!
-!*       4.   < U' TPV' >
-!             -----------
-!
-!! to be tested later
-!!IF (KRR/=0) THEN
-!!  ! here ZFLX= <U'Rnp'> and ZWORK= <U'Thetal'>
-!!  !
-!!  ZVPTU(:,:,:) =                                                        &
-!!    ZWORK(:,:,:)*MXM(ETHETA(KRR,KRRI,PTHLT,PEXNREF,PRT,PLOCPT,PSRCM)) +       &
-!!     ZFLX(:,:,:)*MXM(EMOIST(KRR,KRRI,PTHLT,PEXNREF,PRT,PLOCPT,PSRCM))
-!!  !
-!!  ! stores the horizontal  <U VPT>
-!!  IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-!!    TZFIELD%CMNHNAME   = 'UVPT_FLX'
-!!    TZFIELD%CSTDNAME   = ''
-!!    TZFIELD%CLONGNAME  = 'UVPT_FLX'
-!!    TZFIELD%CUNITS     = 'K m s-1'
-!!    TZFIELD%CDIR       = 'XY'
-!!    TZFIELD%CCOMMENT   = 'X_Y_Z_UVPT_FLX'
-!!    TZFIELD%NGRID      = 2
-!!    TZFIELD%NTYPE      = TYPEREAL
-!!    TZFIELD%NDIMS      = 3
-!!    TZFIELD%LTIMEDEP   = .TRUE.
-!!    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZVPTU)
-!!  END IF
-!!!
-!!ELSE
-!!  ZVPTU(:,:,:)=ZWORK(:,:,:)
-!!END IF
-!
-!
-!*       5.   < V' THETA'l >
-!             --------------
-!
-!
-IF (.NOT. L2D) THEN
-  ZFLX(:,:,:)     = -XCSHF * MYM( PK ) * GY_M_V(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY)
-  ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
-ELSE
-  ZFLX(:,:,:)     = 0.
-END IF
-!
-!
-! Compute the flux at the first inner U-point with an uncentred vertical  
-! gradient
-ZFLX(:,:,IKB:IKB) = -XCSHF * MYM( PK(:,:,IKB:IKB) ) *          &
-  ( DYM(PTHLM(:,:,IKB:IKB)) * PINV_PDYY(:,:,IKB:IKB)           &
-   -MYM( ZCOEFF(:,:,IKB+2:IKB+2)*PTHLM(:,:,IKB+2:IKB+2)        &
-         +ZCOEFF(:,:,IKB+1:IKB+1)*PTHLM(:,:,IKB+1:IKB+1)       &
-         +ZCOEFF(:,:,IKB  :IKB  )*PTHLM(:,:,IKB  :IKB  ) )     &
-        *0.5* ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB))       &
-        * PINV_PDYY(:,:,IKB:IKB) )
-! extrapolates the flux under the ground so that the vertical average with 
-! the IKB flux gives the ground value  ( warning the tangential surface
-! flux has been set to 0 for the moment !!  to be improved )
-ZFLX(:,:,IKB-1:IKB-1) = 2. * MYM(  SPREAD( PSFTHM(:,:)* PDIRCOSYW(:,:), 3,1) ) &
-                       - ZFLX(:,:,IKB:IKB)
-!
-! Add this source to the Theta_l sources
-!
-IF (.NOT. L2D) THEN 
-  IF (.NOT. LFLAT) THEN
-    PRTHLS(:,:,:) =  PRTHLS                                                         &
-                  - DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY )                           &
-                  + DZF( PMZM_PRHODJ *MYF(PDZY*(MZM(ZFLX * PINV_PDYY))) * PINV_PDZZ )
-  ELSE
-    PRTHLS(:,:,:) =  PRTHLS - DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY )
-  END IF
-END IF
-!
-! Compute the equivalent tendancy for Rc and Ri
-!
-!IF ( OSUBG_COND .AND. KRRL > 0 .AND. .NOT. L2D) THEN
-IF ( KRRL >= 1 .AND. .NOT. L2D) THEN
-  IF (.NOT. LFLAT) THEN
-    ZFLXC = 2.*( MYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX )                       &
-                +MZF( MZM( PRHODJ*PATHETA*PSRCM )*MYF(                         &
-                                               PDZY*(MZM( ZFLX*PINV_PDYY )) ) )&
-               )
-    IF ( KRRI >= 1 ) THEN
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. *                                     &
-        (- DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )                   &
-         + DZF( MZM( PRHODJ*PATHETA*PSRCM )*MYF( PDZY*(MZM( ZFLX*PINV_PDYY )) )&
-                                           *PINV_PDZZ )                        &
-        )*(1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. *                                     &
-        (- DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )                   &
-         + DZF( MZM( PRHODJ*PATHETA*PSRCM )*MYF( PDZY*(MZM( ZFLX*PINV_PDYY )) )&
-                                           *PINV_PDZZ )                        &
-        )*PFRAC_ICE(:,:,:)
-    ELSE
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. *                                     &
-        (- DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )                   &
-         + DZF( MZM( PRHODJ*PATHETA*PSRCM )*MYF( PDZY*(MZM( ZFLX*PINV_PDYY )) )&
-                                           *PINV_PDZZ )                        &
-        )
-    END IF
-  ELSE
-    ZFLXC = 2.*MYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX )
-    IF ( KRRI >= 1 ) THEN
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                     &
-        DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )*(1.0-PFRAC_ICE(:,:,:))
-      PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. *                                     &
-        DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )*PFRAC_ICE(:,:,:)
-    ELSE
-      PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                     &
-        DYF( MYM( PRHODJ*PATHETA*PSRCM )*ZFLX*PINV_PDYY )
-    END IF
-  END IF
-END IF
-!
-!! stores this flux in ZWORK to compute later <V' VPT'>
-!!ZWORK(:,:,:) = ZFLX(:,:,:) 
-!
-! stores the horizontal  <V THl>
-IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-  TZFIELD%CMNHNAME   = 'VTHL_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'VTHL_FLX'
-  TZFIELD%CUNITS     = 'K m s-1'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_VTHL_FLX'
-  TZFIELD%NGRID      = 3
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-END IF
-!
-IF (KSPLT==1 .AND. LLES_CALL) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( MYF(ZFLX), X_LES_SUBGRID_VThl ) 
-  CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(PWM,PDYY,PDZZ,PDZY)*MZM(ZFLX))),&
-                         X_LES_RES_ddxa_W_SBG_UaThl , .TRUE. )
-  CALL LES_MEAN_SUBGRID( GY_M_M(PTHLM,PDYY,PDZZ,PDZY)*MYF(ZFLX),&
-                         X_LES_RES_ddxa_Thl_SBG_UaThl , .TRUE. )
-  IF (KRR>=1) THEN
-    CALL LES_MEAN_SUBGRID( GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY)*MYF(ZFLX),&
-                           X_LES_RES_ddxa_Rt_SBG_UaThl , .TRUE. )
-  END IF
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-!
-!
-!*       6.   < V' R'np >
-!             -----------
-!
-IF (KRR/=0) THEN
-  !
-  IF (.NOT. L2D) THEN
-    ZFLX(:,:,:)     = -XCHF * MYM( PK ) * GY_M_V(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY)
-    ZFLX(:,:,IKE+1) = ZFLX(:,:,IKE) 
-  ELSE
-    ZFLX(:,:,:)     = 0.
-  END IF
-!
-! Compute the flux at the first inner U-point with an uncentred vertical  
-! gradient
-  ZFLX(:,:,IKB:IKB) = -XCHF * MYM( PK(:,:,IKB:IKB) ) *           &
-    ( DYM(PRM(:,:,IKB:IKB,1)) * PINV_PDYY(:,:,IKB:IKB)           &
-     -MYM( ZCOEFF(:,:,IKB+2:IKB+2)*PRM(:,:,IKB+2:IKB+2,1)        &
-           +ZCOEFF(:,:,IKB+1:IKB+1)*PRM(:,:,IKB+1:IKB+1,1)       &
-           +ZCOEFF(:,:,IKB  :IKB  )*PRM(:,:,IKB  :IKB  ,1) )     &
-           *0.5* ( PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB))      &
-          * PINV_PDYY(:,:,IKB:IKB) )
-! extrapolates the flux under the ground so that the vertical average with 
-! the IKB flux gives the ground value  ( warning the tangential surface
-! flux has been set to 0 for the moment !!  to be improved )
-  ZFLX(:,:,IKB-1:IKB-1) = 2. * MYM(  SPREAD( PSFRM(:,:)* PDIRCOSYW(:,:), 3,1) ) &
-                       - ZFLX(:,:,IKB:IKB)
-  !
-  ! Add this source to the conservative mixing ratio sources
-  !
-  IF (.NOT. L2D) THEN 
-    IF (.NOT. LFLAT) THEN
-      PRRS(:,:,:,1) = PRRS(:,:,:,1)                                              &
-                    - DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY )                           &
-
-                    + DZF( PMZM_PRHODJ *MYF(PDZY*(MZM(ZFLX * PINV_PDYY))) * PINV_PDZZ )
-    ELSE
-      PRRS(:,:,:,1) = PRRS(:,:,:,1) - DYF( MYM(PRHODJ) * ZFLX * PINV_PDYY )
-    END IF
-  END IF
-  !
-  ! Compute the equivalent tendancy for Rc and Ri
-  !
-  IF ( KRRL >= 1 .AND. .NOT. L2D) THEN   ! Sub-grid condensation
-    IF (.NOT. LFLAT) THEN
-      ZFLXC = ZFLXC            &
-            + 2.*( MXF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX )                     &
-                +  MZF( MZM( PRHODJ*PAMOIST*PSRCM )*MYF(                       &
-                                               PDZY*(MZM( ZFLX*PINV_PDYY )) ) )&
-                 )
-      IF ( KRRI >= 1 ) THEN
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )                        &
-         + DZF( MZM( PRHODJ*PAMOIST*PSRCM )*MYF( PDZY*(MZM( ZFLX*PINV_PDYY )) )&
-                                           * PINV_PDZZ )                       &
-        )*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) +  2. *                                  &
-        (- DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )                        &
-         + DZF( MZM( PRHODJ*PAMOIST*PSRCM )*MYF( PDZY*(MZM( ZFLX*PINV_PDYY )) )&
-                                           * PINV_PDZZ )                       &
-        )*PFRAC_ICE(:,:,:)
-      ELSE
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) +  2. *                                  &
-        (- DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )                        &
-         + DZF( MZM( PRHODJ*PAMOIST*PSRCM )*MYF( PDZY*(MZM( ZFLX*PINV_PDYY )) )&
-                                           * PINV_PDZZ )                       &
-        )
-      END IF
-    ELSE
-      ZFLXC = ZFLXC + 2.*MXF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX )
-      IF ( KRRI >= 1 ) THEN
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                   &
-        DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )*(1.0-PFRAC_ICE(:,:,:))
-        PRRS(:,:,:,4) = PRRS(:,:,:,4) - 2. *                                   &
-        DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )*PFRAC_ICE(:,:,:)
-      ELSE
-        PRRS(:,:,:,2) = PRRS(:,:,:,2) - 2. *                                   &
-        DYF( MYM( PRHODJ*PAMOIST*PSRCM )*ZFLX/PDYY )
-      END IF
-    END IF
-  END IF
-  !
-  ! stores the horizontal  <V Rnp>
-  IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-    TZFIELD%CMNHNAME   = 'VR_FLX'
-    TZFIELD%CSTDNAME   = ''
-    TZFIELD%CLONGNAME  = 'VR_FLX'
-    TZFIELD%CUNITS     = 'kg kg-1 m s-1'
-    TZFIELD%CDIR       = 'XY'
-    TZFIELD%CCOMMENT   = 'X_Y_Z_VR_FLX'
-    TZFIELD%NGRID      = 3
-    TZFIELD%NTYPE      = TYPEREAL
-    TZFIELD%NDIMS      = 3
-    TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-  END IF
-  !
-  IF (KSPLT==1 .AND. LLES_CALL) THEN
-    CALL SECOND_MNH(ZTIME1)
-    CALL LES_MEAN_SUBGRID( MYF(ZFLX), X_LES_SUBGRID_VRt ) 
-    CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(PWM,PDYY,PDZZ,PDZY)*MZM(ZFLX))),&
-                           X_LES_RES_ddxa_W_SBG_UaRt , .TRUE. )
-    CALL LES_MEAN_SUBGRID( GY_M_M(PTHLM,PDYY,PDZZ,PDZY)*MYF(ZFLX), &
-                           X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. )
-    CALL LES_MEAN_SUBGRID( GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY)*MYF(ZFLX), &
-                           X_LES_RES_ddxa_Rt_SBG_UaRt , .TRUE. )
-    CALL SECOND_MNH(ZTIME2)
-    XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-  END IF
-!
-  !
-  IF (KRRL>0 .AND. KSPLT==1 .AND. LLES_CALL) THEN
-    CALL SECOND_MNH(ZTIME1)
-    CALL LES_MEAN_SUBGRID(MYF(ZFLXC), X_LES_SUBGRID_VRc )
-    CALL SECOND_MNH(ZTIME2)
-    XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-  END IF
-  !
-END IF
-!
-!*       7.   < V' TPV' >
-!             -----------
-!
-!! to be tested later
-!!IF (KRR/=0) THEN
-!!  ! here ZFLX= <V'R'np> and ZWORK= <V'Theta'l>
-!!  !
-!!  IF (.NOT. L2D) THEN        &
-!!    ZVPTV(:,:,:) =                                                         &
-!!        ZWORK(:,:,:)*MYM(ETHETA(KRR,KRRI,PTHLT,PEXNREF,PRT,PLOCPT,PSRCM)) +       &
-!!         ZFLX(:,:,:)*MYM(EMOIST(KRR,KRRI,PTHLT,PEXNREF,PRT,PLOCPT,PSRCM))
-!!  ELSE
-!!    ZVPTV(:,:,:) = 0.
-!!  END IF
-!!  !
-!!  ! stores the horizontal  <V VPT>
-!!  IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-!!    TZFIELD%CMNHNAME   = 'VVPT_FLX'
-!!    TZFIELD%CSTDNAME   = ''
-!!    TZFIELD%CLONGNAME  = 'VVPT_FLX'
-!!    TZFIELD%CUNITS     = 'K m s-1'
-!!    TZFIELD%CDIR       = 'XY'
-!!    TZFIELD%CCOMMENT   = 'X_Y_Z_VVPT_FLX'
-!!    TZFIELD%NGRID      = 3
-!!    TZFIELD%NTYPE      = TYPEREAL
-!!    TZFIELD%NDIMS      = 3
-!!    TZFIELD%LTIMEDEP   = .TRUE.
-!!    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZVPTV)
-!!  END IF
-!!!
-!!ELSE
-!!  ZVPTV(:,:,:)=ZWORK(:,:,:)
-!!END IF
-!
-!
-END SUBROUTINE TURB_HOR_THERMO_FLUX
-END MODULE MODE_TURB_HOR_THERMO_FLUX
diff --git a/src/common/turb/mode_turb_hor_tke.F90 b/src/common/turb/mode_turb_hor_tke.F90
deleted file mode 100644
index 5ff7a0029..000000000
--- a/src/common/turb/mode_turb_hor_tke.F90
+++ /dev/null
@@ -1,213 +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 MODE_TURB_HOR_TKE
-IMPLICIT NONE
-CONTAINS
-      SUBROUTINE TURB_HOR_TKE(KSPLT,                                 &
-                      PDXX, PDYY, PDZZ,PDZX,PDZY,                    &
-                      PINV_PDXX, PINV_PDYY, PINV_PDZZ, PMZM_PRHODJ,  &
-                      PK, PRHODJ, PTKEM,                             &
-                      PTRH                                           )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR_TKE* computes the horizontal turbulant transports of Tke
-!!
-!!    PURPOSE
-!!    -------
-
-!!**  METHOD
-!!    ------
-!!
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!       
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!           
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original       Aug 29, 1994
-!!                     Mar 07  2001 (V. Masson and J. Stein) new routine
-!!                     Nov 06, 2002 (V. Masson) LES budgets
-!! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CONF
-USE MODD_CST
-USE MODD_CTURB
-USE MODD_PARAMETERS
-USE MODD_LES
-!
-!
-USE MODI_SHUMAN 
-USE MODI_GRADIENT_M
-USE MODI_LES_MEAN_SUBGRID
-!
-USE MODI_SECOND_MNH
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-INTEGER,                  INTENT(IN) :: KSPLT        ! current split index
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                     ! Metric coefficients
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PK           ! Turbulent diffusion doef.
-                                                     ! PK = PLM * SQRT(PTKEM)
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PINV_PDXX    ! 1./PDXX
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PINV_PDYY    ! 1./PDYY
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PINV_PDZZ    ! 1./PDZZ
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PMZM_PRHODJ  ! MZM(PRHODJ)
-REAL, DIMENSION(:,:,:),   INTENT(IN) :: PRHODJ       ! density * grid volume
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTKEM    ! TKE at time t- dt
-REAL, DIMENSION(:,:,:),   INTENT(OUT)   ::  PTRH     ! horizontal transport of Tke
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-INTEGER :: IKB, IKU
-!
-REAL, DIMENSION(SIZE(PDZZ,1),SIZE(PDZZ,2),1+JPVEXT:3+JPVEXT) :: ZCOEFF 
-                                    ! coefficients for the uncentred gradient 
-                                    ! computation near the ground
-!
-REAL, DIMENSION(SIZE(PTKEM,1),SIZE(PTKEM,2),SIZE(PTKEM,3)):: ZFLX
-!
-REAL :: ZTIME1, ZTIME2
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-IKB = 1.+JPVEXT
-IKU = SIZE(PTKEM,3)
-!
-!  compute the coefficients for the uncentred gradient computation near the 
-!  ground
-!
-ZCOEFF(:,:,IKB+2)= - PDZZ(:,:,IKB+1) /      &
-     ( (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) * PDZZ(:,:,IKB+2) )
-ZCOEFF(:,:,IKB+1)=   (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) /      &
-     ( PDZZ(:,:,IKB+1) * PDZZ(:,:,IKB+2) )
-ZCOEFF(:,:,IKB)= - (PDZZ(:,:,IKB+2)+2.*PDZZ(:,:,IKB+1)) /      &
-     ( (PDZZ(:,:,IKB+2)+PDZZ(:,:,IKB+1)) * PDZZ(:,:,IKB+1) )
-!
-!--------------------------------------------------------------------
-!
-!*       2.   horizontal transport of Tke u'e
-!             -------------------------------
-!
-!
-ZFLX = -XCET * MXM(PK) * GX_M_U(1,IKU,1,PTKEM,PDXX,PDZZ,PDZX) ! < u'e >
-!
-! special case near the ground ( uncentred gradient )
-!
-ZFLX(:,:,IKB) =  ZCOEFF(:,:,IKB+2)*PTKEM(:,:,IKB+2)                     &
-               + ZCOEFF(:,:,IKB+1)*PTKEM(:,:,IKB+1)                     &
-               + ZCOEFF(:,:,IKB  )*PTKEM(:,:,IKB  )     
-!
-ZFLX(:,:,IKB:IKB) =                                                      &
-   - XCET * MXM( PK(:,:,IKB:IKB) )                           *  (        &
-       DXM ( PTKEM(:,:,IKB:IKB) ) * PINV_PDXX(:,:,IKB:IKB)               &
-      -MXM ( ZFLX (:,:,IKB:IKB) ) * PINV_PDXX(:,:,IKB:IKB)               &
-       * 0.5 * ( PDZX(:,:,IKB+1:IKB+1) + PDZX(:,:,IKB:IKB) )     ) 
-!
-! extrapolate the fluxes to obtain < u'e > = 0 at the ground
-!
-ZFLX(:,:,IKB-1) = - ZFLX(:,:,IKB)
-!
-! let the same flux at IKU-1 and IKU level
-!
-ZFLX(:,:,IKU) =  ZFLX(:,:,IKU-1)
-!
-IF (.NOT. LFLAT) THEN
-  PTRH =-(  DXF( MXM(PRHODJ) * ZFLX                             * PINV_PDXX)&
-          - DZF( PMZM_PRHODJ * MXF( PDZX * MZM(ZFLX*PINV_PDXX)) * PINV_PDZZ)&
-         ) /PRHODJ
-ELSE
-  PTRH =-(  DXF( MXM(PRHODJ) * ZFLX                             * PINV_PDXX)&
-         ) /PRHODJ
-END IF
-!
-IF (LLES_CALL .AND. KSPLT==1) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( MXF(ZFLX), X_LES_SUBGRID_UTke ) 
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-!
-!
-!--------------------------------------------------------------------
-!
-!*       3.   horizontal transport of Tke v'e
-!             -------------------------------
-!
-IF (.NOT. L2D) THEN
-  ZFLX =-XCET * MYM(PK) * GY_M_V(1,IKU,1,PTKEM,PDYY,PDZZ,PDZY) ! < v'e >
-!
-! special case near the ground ( uncentred gradient )
-!
-  ZFLX(:,:,IKB) =  ZCOEFF(:,:,IKB+2)*PTKEM(:,:,IKB+2)                     &
-                 + ZCOEFF(:,:,IKB+1)*PTKEM(:,:,IKB+1)                     &
-                 + ZCOEFF(:,:,IKB  )*PTKEM(:,:,IKB  )     
-!
-  ZFLX(:,:,IKB:IKB) =                                                      &
-     - XCET * MYM( PK(:,:,IKB:IKB) )                        *  (           &
-       DYM ( PTKEM(:,:,IKB:IKB) ) * PINV_PDYY(:,:,IKB:IKB)                 &
-     - MYM ( ZFLX (:,:,IKB:IKB) ) * PINV_PDYY(:,:,IKB:IKB)                 &
-         * 0.5 * ( PDZY(:,:,IKB+1:IKB+1) + PDZY(:,:,IKB:IKB) )  )
-!
-!    extrapolate the fluxes to obtain < v'e > = 0 at the ground
-!
-  ZFLX(:,:,IKB-1) = - ZFLX(:,:,IKB)
-!
-!   let the same flux at IKU-1 and IKU level
-!
-  ZFLX(:,:,IKU) =  ZFLX(:,:,IKU-1)
-!
-! complete the explicit turbulent transport
-!
-  IF (.NOT. LFLAT) THEN
-    PTRH = PTRH - (  DYF( MYM(PRHODJ) * ZFLX                              * PINV_PDYY )  &
-                   - DZF( PMZM_PRHODJ * MYF( PDZY * MZM(ZFLX*PINV_PDYY) ) * PINV_PDZZ )  &
-                  ) /PRHODJ
-  ELSE
-    PTRH = PTRH - (  DYF( MYM(PRHODJ) * ZFLX                              * PINV_PDYY )  &
-                  ) /PRHODJ
-  END IF
-!
-  IF (LLES_CALL .AND. KSPLT==1) THEN
-    CALL SECOND_MNH(ZTIME1)
-    CALL LES_MEAN_SUBGRID( MYF(ZFLX), X_LES_SUBGRID_VTke )
-    CALL SECOND_MNH(ZTIME2)
-    XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-  END IF
-!
-END IF
-!
-!----------------------------------------------------------------------------
-!
-END SUBROUTINE TURB_HOR_TKE
-END MODULE MODE_TURB_HOR_TKE
diff --git a/src/common/turb/mode_turb_hor_uv.F90 b/src/common/turb/mode_turb_hor_uv.F90
deleted file mode 100644
index 611679c73..000000000
--- a/src/common/turb/mode_turb_hor_uv.F90
+++ /dev/null
@@ -1,292 +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 MODE_TURB_HOR_UV
-IMPLICIT NONE
-CONTAINS
-!     ################################################################
-      SUBROUTINE TURB_HOR_UV(KSPLT,                                  &
-                      OTURB_FLX,                                     &
-                      TPFILE,                                        &
-                      PK,PINV_PDXX,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,  &
-                      PDXX,PDYY,PDZZ,PDZX,PDZY,                      &
-                      PDIRCOSZW,                                     &
-                      PCOSSLOPE,PSINSLOPE,                           &
-                      PRHODJ,                                        &
-                      PCDUEFF,PTAU11M,PTAU12M,PTAU22M,PTAU33M,       &
-                      PUM,PVM,PUSLOPEM,PVSLOPEM,                     &
-                      PDP,                                           &
-                      PRUS,PRVS                                      )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!     see TURB_HOR
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!                     Aug    , 1997 (V. Saravane) spliting of TURB_HOR
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Oct  18, 2000 (V. Masson) LES computations + LFLAT switch
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_PARAMETERS
-USE MODD_LES
-!
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-!
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_SHUMAN 
-USE MODE_COEFJ, ONLY: COEFJ
-USE MODI_LES_MEAN_SUBGRID
-!
-USE MODI_SECOND_MNH
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-!
-INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
-LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PK          ! Turbulent diffusion doef.
-                                                        ! PK = PLM * SQRT(PTKEM)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDXX   ! 1./PDXX
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDYY   ! 1./PDYY
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDZZ   ! 1./PDZZ
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PMZM_PRHODJ ! MZM(PRHODJ)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDYY, PDZZ, PDZX, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:),     INTENT(IN)    ::  PDIRCOSZW
-! Director Cosinus along z directions at surface w-point
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCOSSLOPE       ! cosinus of the angle 
-                                      ! between i and the slope vector
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE       ! sinus of the angle 
-                                      ! between i and the slope vector
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRHODJ       ! density * grid volume
-!
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCDUEFF      ! Cd * || u || at time t
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU11M      ! <uu> in the axes linked 
-       ! to the maximum slope direction and the surface normal and the binormal 
-       ! at time t - dt
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU12M      ! <uv> in the same axes
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU22M      ! <vv> in the same axes
-REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU33M      ! <ww> in the same axes
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PUM,PVM
-REAL, DIMENSION(:,:),      INTENT(IN)   ::  PUSLOPEM     ! wind component along the 
-                                     ! maximum slope direction
-REAL, DIMENSION(:,:),      INTENT(IN)   ::  PVSLOPEM     ! wind component along the 
-                                     ! direction normal to the maximum slope one
-!
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS, PRVS   ! var. at t+1 -split-
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PDP          ! TKE production terms
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))       &
-                                     :: ZFLX,ZWORK
-    ! work arrays
-!   
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2)) ::ZDIRSINZW 
-      ! sinus of the angle between the vertical and the normal to the orography
-INTEGER             :: IKB,IKE
-                                    ! Index values for the Beginning and End
-                                    ! mass points of the domain  
-!
-REAL, DIMENSION(SIZE(PUM,1),SIZE(PUM,2),SIZE(PUM,3))  :: GY_U_UV_PUM
-REAL, DIMENSION(SIZE(PVM,1),SIZE(PVM,2),SIZE(PVM,3))  :: GX_V_UV_PVM
-!
-REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-IKB = 1+JPVEXT               
-IKE = SIZE(PUM,3)-JPVEXT    
-!
-ZDIRSINZW(:,:) = SQRT( 1. - PDIRCOSZW(:,:)**2 )
-!
-GX_V_UV_PVM = GX_V_UV(PVM,PDXX,PDZZ,PDZX)
-IF (.NOT. L2D) GY_U_UV_PUM = GY_U_UV(PUM,PDYY,PDZZ,PDZY)
-!
-!
-!*      12.   < U'V'>
-!             -------
-!
-!
-IF (.NOT. L2D) THEN
-  ZFLX(:,:,:)= - XCMFS * MYM(MXM(PK)) *                           &
-          (GY_U_UV_PUM + GX_V_UV_PVM)
-ELSE
-  ZFLX(:,:,:)= - XCMFS * MYM(MXM(PK)) *                           &
-          (GX_V_UV_PVM)
-END IF
-!
-ZFLX(:,:,IKE+1)= ZFLX(:,:,IKE)
-!
-!
-! Compute the correlation at the first physical level with the following 
-! hypothesis du/dz vary in 1/z and w=0 at the ground
-ZFLX(:,:,IKB:IKB)   = - XCMFS * MYM(MXM(PK(:,:,IKB:IKB))) *  (     &
-  ( DYM( PUM(:,:,IKB:IKB) )                                        &
-   -MYM( (PUM(:,:,IKB+1:IKB+1)-PUM(:,:,IKB:IKB))                   &
-        *(1./MXM(PDZZ(:,:,IKB+1:IKB+1))+1./MXM(PDZZ(:,:,IKB:IKB))))&
-    *0.5*MXM((PDZY(:,:,IKB+1:IKB+1)+PDZY(:,:,IKB:IKB)))            &
-  ) / MXM(PDYY(:,:,IKB:IKB))                                       &
- +( DXM( PVM(:,:,IKB:IKB) )                                        &
-   -MXM( (PVM(:,:,IKB+1:IKB+1)-PVM(:,:,IKB:IKB))                   &
-        *(1./MYM(PDZZ(:,:,IKB+1:IKB+1))+1./MYM(PDZZ(:,:,IKB:IKB))))&
-    *0.5*MYM((PDZX(:,:,IKB+1:IKB+1)+PDZX(:,:,IKB:IKB)))            &
-  ) / MYM(PDXX(:,:,IKB:IKB))                                 ) 
-! 
-! extrapolates this flux under the ground with the surface flux
-ZFLX(:,:,IKB-1) =                                                           &
-   PTAU11M(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * PDIRCOSZW(:,:)**2         &
-  +PTAU12M(:,:) * (PCOSSLOPE(:,:)**2 - PSINSLOPE(:,:)**2) *                   &
-                  PDIRCOSZW(:,:)**2                                           &
-  -PTAU22M(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:)                             &
-  +PTAU33M(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) * ZDIRSINZW(:,:)**2         &
-  -PCDUEFF(:,:) * (                                                           &
-    2. * PUSLOPEM(:,:) * PCOSSLOPE(:,:) * PSINSLOPE(:,:) *                    &
-          PDIRCOSZW(:,:) * ZDIRSINZW(:,:)                                     &
-    +PVSLOPEM(:,:) * (PCOSSLOPE(:,:)**2 - PSINSLOPE(:,:)**2) * ZDIRSINZW(:,:) &
-                   )
-!  
-ZFLX(:,:,IKB-1:IKB-1) = 2. * MXM( MYM( ZFLX(:,:,IKB-1:IKB-1) ) )  &
-                   - ZFLX(:,:,IKB:IKB)
-!     
-! stores  <U V>
-IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-  TZFIELD%CMNHNAME   = 'UV_FLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'UV_FLX'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_UV_FLX'
-  TZFIELD%NGRID      = 5
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-END IF
-!
-!
-!
-!computation of the source for rho*V due to this flux
-IF (.NOT. LFLAT) THEN
-  PRUS(:,:,:) = PRUS(:,:,:)                                &
-              - DYF(ZFLX * MXM(MYM(PRHODJ) * PINV_PDYY) )         &
-              + DZF( MYF( MZM(ZFLX)*MXM(PDZY/MZM(PDYY)))   &
-                    * MXM(PMZM_PRHODJ * PINV_PDZZ) )
-ELSE
-  PRUS(:,:,:) = PRUS(:,:,:) - DYF(ZFLX * MXM(MYM(PRHODJ) * PINV_PDYY) )
-END IF
-!
-!computation of the source for rho*V due to this flux
-IF (.NOT. LFLAT) THEN
-  PRVS(:,:,:) = PRVS(:,:,:)                             &
-                - DXF(ZFLX * MYM(MXM(PRHODJ) * PINV_PDXX) )    &
-                + DZF( MXF( MZM(ZFLX)*MYM(PDZX/MZM(PDXX))) &
-                      * MYM(PMZM_PRHODJ * PINV_PDZZ) )
-ELSE
-  PRVS(:,:,:) = PRVS(:,:,:) - DXF(ZFLX * MYM(MXM(PRHODJ) * PINV_PDXX) )
-END IF
-!
-IF (KSPLT==1) THEN
-  !
-  !Contribution to the dynamic production of TKE:
-  !
-  IF (.NOT. L2D) THEN
-    ZWORK(:,:,:) = - MXF( MYF( ZFLX *                                &
-       (GY_U_UV_PUM + GX_V_UV_PVM) ) ) 
-  ELSE
-    ZWORK(:,:,:) = - MXF( MYF( ZFLX *                                &
-       (GX_V_UV_PVM) ) )  
-  ENDIF
-  !
-  ! evaluate the dynamic production at w(IKB+1) in PDP(IKB)
-  !
-  ZWORK(:,:,IKB:IKB) =  -                                             &
-     MXF ( MYF( 0.5 * (ZFLX(:,:,IKB+1:IKB+1)+ZFLX(:,:,IKB:IKB)) ) )   &
-   *(MXF ( MYF(                                                       &
-       DYM( 0.5 * (PUM(:,:,IKB+1:IKB+1)+PUM(:,:,IKB:IKB))  )          &
-      / MXM( 0.5*(PDYY(:,:,IKB:IKB)+PDYY(:,:,IKB+1:IKB+1)) )          &
-      +DXM( 0.5 * (PVM(:,:,IKB+1:IKB+1)+PVM(:,:,IKB:IKB))  )          &
-      / MYM( 0.5*(PDXX(:,:,IKB:IKB)+PDXX(:,:,IKB+1:IKB+1)) )          &
-         )    )                                                       &  
-    -MXF( (PUM(:,:,IKB+1:IKB+1)-PUM(:,:,IKB:IKB)) /                   &
-              MXM(PDZZ(:,:,IKB+1:IKB+1)) * PDZY(:,:,IKB+1:IKB+1)      &
-        ) / MYF(MXM( 0.5*(PDYY(:,:,IKB:IKB)+PDYY(:,:,IKB+1:IKB+1)) ) )&
-    -MYF( (PVM(:,:,IKB+1:IKB+1)-PVM(:,:,IKB:IKB)) /                   &
-              MYM(PDZZ(:,:,IKB+1:IKB+1)) * PDZX(:,:,IKB+1:IKB+1)      &
-        ) / MXF(MYM( 0.5*(PDXX(:,:,IKB:IKB)+PDXX(:,:,IKB+1:IKB+1)) ) )&
-    ) 
-  !
-  ! dynamic production 
-  PDP(:,:,:) = PDP(:,:,:) + ZWORK(:,:,:)
-  ! 
-END IF
-!
-! Storage in the LES configuration
-!
-IF (LLES_CALL .AND. KSPLT==1) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( MXF(MYF(ZFLX)), X_LES_SUBGRID_UV ) 
-  CALL LES_MEAN_SUBGRID( MXF(MYF(GY_U_UV(PUM,PDYY,PDZZ,PDZY)*ZFLX)), X_LES_RES_ddxa_U_SBG_UaU , .TRUE.)
-  CALL LES_MEAN_SUBGRID( MXF(MYF(GX_V_UV(PVM,PDXX,PDZZ,PDZX)*ZFLX)), X_LES_RES_ddxa_V_SBG_UaV , .TRUE.)
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-!
-!
-END SUBROUTINE TURB_HOR_UV
-END MODULE MODE_TURB_HOR_UV
diff --git a/src/common/turb/mode_turb_hor_uw.F90 b/src/common/turb/mode_turb_hor_uw.F90
deleted file mode 100644
index 47005d4a3..000000000
--- a/src/common/turb/mode_turb_hor_uw.F90
+++ /dev/null
@@ -1,248 +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 MODE_TURB_HOR_UW
-IMPLICIT NONE
-CONTAINS
-!     ################################################################
-      SUBROUTINE TURB_HOR_UW(KSPLT,                                  &
-                      OTURB_FLX,KRR,                                 &
-                      TPFILE,                                        &
-                      PK,PINV_PDXX,PINV_PDZZ,PMZM_PRHODJ,            &
-                      PDXX,PDZZ,PDZX,                                &
-                      PRHODJ,PTHVREF,                                &
-                      PUM,PWM,PTHLM,PRM,PSVM,                        &
-                      PTKEM,PLM,                                     &
-                      PDP,                                           &
-                      PRUS,PRWS                                      )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!     see TURB_HOR
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!                     Aug    , 1997 (V. Saravane) spliting of TURB_HOR
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Oct  18, 2000 (V. Masson) LES computations + LFLAT switch
-!!                     Feb  14, 2001 (V. Masson and J. Stein) DZF bug on PRWS
-!!                                   + remove the use of W=0 at the ground
-!!                                   + extrapolation under the ground
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
-!!                                              change of YCOMMENT
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_PARAMETERS
-USE MODD_LES
-USE MODD_NSV
-!
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-!
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_SHUMAN 
-USE MODE_COEFJ, ONLY: COEFJ
-USE MODI_LES_MEAN_SUBGRID
-!
-USE MODI_SECOND_MNH
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-!
-INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
-LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PK          ! Turbulent diffusion doef.
-                                                        ! PK = PLM * SQRT(PTKEM)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDXX   ! 1./PDXX
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDZZ   ! 1./PDZZ
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PMZM_PRHODJ ! MZM(PRHODJ)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDXX, PDZZ, PDZX
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRHODJ       ! density * grid volume
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTHVREF      ! ref. state VPT       
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PUM,PWM,PTHLM
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PRM
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PSVM
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTKEM        ! TKE at time t- dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLM          ! Turb. mixing length
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRUS, PRWS
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PDP          ! TKE production terms
-!
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))       &
-                                     :: ZFLX,ZWORK
-    ! work arrays
-!   
-INTEGER             :: IKB,IKE,IKU
-                                    ! Index values for the Beginning and End
-                                    ! mass points of the domain  
-INTEGER             :: JSV          ! scalar loop counter
-!
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GX_W_UW_PWM
-!
-REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-IKB = 1+JPVEXT               
-IKE = SIZE(PWM,3)-JPVEXT    
-IKU = SIZE(PWM,3)
-!
-!
-GX_W_UW_PWM = GX_W_UW(PWM,PDXX,PDZZ,PDZX)
-!
-!
-!*      13.   < U'W'>
-!             -------
-! 
-! residual part of < U'W'> depending on dw/dx
-!
-ZFLX(:,:,:) =                                                      &
-  - XCMFS * MXM(MZM(PK)) * GX_W_UW_PWM
-!!         &  to be tested
-!!  - (2./3.) * XCMFB * MZM( ZVPTU * MXM( PLM / SQRT(PTKEM) * XG / PTHVREF ) )
-!
-ZFLX(:,:,IKE+1) = 0.  ! rigid wall condition => no turbulent flux
-!
-! Nullify the flux at the ground level because it has been fully taken into
-! account in turb_ver and extrapolate the flux under the ground 
-ZFLX(:,:,IKB) = 0.
-ZFLX(:,:,IKB-1)=2.*ZFLX(:,:,IKB)- ZFLX(:,:,IKB+1)
-!
-! stores  <U W>
-IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-  TZFIELD%CMNHNAME   = 'UW_HFLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'UW_HFLX'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_UW_HFLX'
-  TZFIELD%NGRID      = 6
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-END IF
-!
-!
-! compute the source for rho*U due to this residual flux ( the other part is
-! taken into account in TURB_VER)
-PRUS(:,:,:) = PRUS(:,:,:) - DZF( ZFLX* MXM( PMZM_PRHODJ ) / MXM( PDZZ ) )
-!
-!computation of the source for rho*W due to this flux
-IF (.NOT. LFLAT) THEN
-  PRWS(:,:,:) = PRWS(:,:,:)                              &
-        -DXF( MZM( MXM(PRHODJ) * PINV_PDXX) * ZFLX)           &
-        +DZM( PRHODJ * MXF( MZF( ZFLX*PDZX ) * PINV_PDXX ) / MZF(PDZZ) )
-ELSE
-  PRWS(:,:,:) = PRWS(:,:,:) -DXF( MZM( MXM(PRHODJ) * PINV_PDXX) * ZFLX)
-END IF
-! 
-IF (KSPLT==1) THEN
-  !
-  !Contribution to the dynamic production of TKE:
-  !
-  ZWORK(:,:,:) =-MZF( MXF(                               &
-     ZFLX *( GZ_U_UW(PUM,PDZZ) + GX_W_UW_PWM ) ) )
-  !
-  !
-  ! evaluate the dynamic production at w(IKB+1) in PDP(IKB)
-  ZWORK(:,:,IKB:IKB) = - MXF (                                             &
-     ZFLX(:,:,IKB+1:IKB+1) *                                               &
-   (   (PUM(:,:,IKB+1:IKB+1)-PUM(:,:,IKB:IKB)) / MXM(PDZZ(:,:,IKB+1:IKB+1))&
-     + ( DXM( PWM(:,:,IKB+1:IKB+1) )                                       &
-        -MXM(  (PWM(:,:,IKB+2:IKB+2)-PWM(:,:,IKB+1:IKB+1))                 &
-                /(PDZZ(:,:,IKB+2:IKB+2)+PDZZ(:,:,IKB+1:IKB+1))             &
-              +(PWM(:,:,IKB+1:IKB+1)-PWM(:,:,IKB  :IKB  ))                 &
-                /(PDZZ(:,:,IKB+1:IKB+1)+PDZZ(:,:,IKB  :IKB  ))             &
-            )                                                              &
-          * PDZX(:,:,IKB+1:IKB+1)                                          &
-       ) / (0.5*(PDXX(:,:,IKB+1:IKB+1)+PDXX(:,:,IKB:IKB)))                 &
-   )                        )  
-  !
-  ! dynamic production computation
-  PDP(:,:,:) = PDP(:,:,:) +  ZWORK(:,:,:)  
-  !
-END IF
-!
-! Storage in the LES configuration (addition to TURB_VER computation)
-!
-IF (LLES_CALL .AND. KSPLT==1) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( MZF(MXF(ZFLX)), X_LES_SUBGRID_WU , .TRUE. )
-  CALL LES_MEAN_SUBGRID( MZF(MXF(GZ_U_UW(PUM,PDZZ)*ZFLX)), X_LES_RES_ddxa_U_SBG_UaU , .TRUE.)
-  CALL LES_MEAN_SUBGRID( MZF(MXF(GX_W_UW_PWM*ZFLX)), X_LES_RES_ddxa_W_SBG_UaW , .TRUE.)
-  CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX)*MZF(ZFLX)),&
-                         X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE.)
-  IF (KRR>=1) THEN
-    CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX)*MZF(ZFLX)), &
-                           X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE.)
-  END IF
-  DO JSV=1,NSV
-    CALL LES_MEAN_SUBGRID( MXF(GX_M_U(1,IKU,1,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX)*MZF(ZFLX)), &
-                           X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV) , .TRUE.)
-  END DO
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-
-!
-END SUBROUTINE TURB_HOR_UW
-END MODULE MODE_TURB_HOR_UW
diff --git a/src/common/turb/mode_turb_hor_vw.F90 b/src/common/turb/mode_turb_hor_vw.F90
deleted file mode 100644
index 8ede64d51..000000000
--- a/src/common/turb/mode_turb_hor_vw.F90
+++ /dev/null
@@ -1,259 +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 MODE_TURB_HOR_VW
-IMPLICIT NONE
-CONTAINS
-      SUBROUTINE TURB_HOR_VW(KSPLT,                                  &
-                      OTURB_FLX,KRR,                                 &
-                      TPFILE,                                        &
-                      PK,PINV_PDYY,PINV_PDZZ,PMZM_PRHODJ,            &
-                      PDYY,PDZZ,PDZY,                                &
-                      PRHODJ,PTHVREF,                                &
-                      PVM,PWM,PTHLM,PRM,PSVM,                        &
-                      PTKEM,PLM,                                     &
-                      PDP,                                           &
-                      PRVS,PRWS                                      )
-!     ################################################################
-!
-!
-!!****  *TURB_HOR* -routine to compute the source terms in the meso-NH
-!!               model equations due to the non-vertical turbulent fluxes.
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!     see TURB_HOR
-!!
-!!**  METHOD
-!!    ------
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!
-!!      Joan Cuxart             * INM and Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!                     Aug    , 1997 (V. Saravane) spliting of TURB_HOR
-!!                     Nov  27, 1997 (V. Masson) clearing of the routine
-!!                     Oct  18, 2000 (V. Masson) LES computations + LFLAT switch
-!!                     Feb  14, 2001 (V. Masson and J. Stein) DZF bug on PRWS
-!!                                + remove the use of W=0 at the ground
-!!                                + extrapolataion under the ground
-!!                     Nov  06, 2002 (V. Masson) LES budgets
-!!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
-!!                                              change of YCOMMENT
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODD_CST
-USE MODD_CONF
-USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
-USE MODD_IO,             ONLY: TFILEDATA
-USE MODD_PARAMETERS
-USE MODD_LES
-USE MODD_NSV
-!
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
-!
-USE MODI_GRADIENT_M
-USE MODI_GRADIENT_U
-USE MODI_GRADIENT_V
-USE MODI_GRADIENT_W
-USE MODI_SHUMAN 
-USE MODE_COEFJ, ONLY: COEFJ
-USE MODI_LES_MEAN_SUBGRID
-!
-USE MODI_SECOND_MNH
-!
-IMPLICIT NONE
-!
-!
-!*       0.1  declaration of arguments
-!
-!
-!
-INTEGER,                  INTENT(IN)    ::  KSPLT        ! split process index
-LOGICAL,                  INTENT(IN)    ::  OTURB_FLX    ! switch to write the
-                                 ! turbulent fluxes in the syncronous FM-file
-INTEGER,                  INTENT(IN)    ::  KRR          ! number of moist var.
-TYPE(TFILEDATA),          INTENT(IN)    ::  TPFILE       ! Output file
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PK          ! Turbulent diffusion doef.
-                                                        ! PK = PLM * SQRT(PTKEM)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDYY   ! 1./PDYY
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PINV_PDZZ   ! 1./PDZZ
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PMZM_PRHODJ ! MZM(PRHODJ)
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PDYY, PDZZ, PDZY 
-                                                         ! Metric coefficients
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PRHODJ       ! density * grid volume
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTHVREF      ! ref. state VPT       
-!
-! Variables at t-1
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PVM,PWM,PTHLM
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PRM
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    ::  PSVM
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PTKEM        ! TKE at time t- dt
-REAL, DIMENSION(:,:,:),   INTENT(IN)    ::  PLM          ! Turb. mixing length
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PRVS, PRWS   ! var. at t+1 -split-
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) ::  PDP          ! TKE production terms
-!
-!
-!
-!*       0.2  declaration of local variables
-!
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))       &
-                                     :: ZFLX,ZWORK
-    ! work arrays
-!   
-!! REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: ZVPTV
-INTEGER             :: IKB,IKE,IKU
-                                    ! Index values for the Beginning and End
-                                    ! mass points of the domain  
-INTEGER             :: JSV          ! scalar loop counter
-!
-REAL, DIMENSION(SIZE(PWM,1),SIZE(PWM,2),SIZE(PWM,3))  :: GY_W_VW_PWM
-!
-REAL :: ZTIME1, ZTIME2
-TYPE(TFIELDDATA) :: TZFIELD
-! ---------------------------------------------------------------------------
-!
-!*       1.   PRELIMINARY COMPUTATIONS
-!             ------------------------
-!
-IKB = 1+JPVEXT               
-IKE = SIZE(PWM,3)-JPVEXT    
-IKU = SIZE(PWM,3)
-!
-!
-IF (.NOT. L2D) GY_W_VW_PWM = GY_W_VW(PWM,PDYY,PDZZ,PDZY)
-!
-!
-!*      14.   < V'W'>
-!             -------
-!
-! residual part of < V'W'> depending on dw/dy
-!
-IF (.NOT. L2D) THEN
-  ZFLX(:,:,:) =                                                      &
-    - XCMFS * MYM(MZM(PK)) * GY_W_VW_PWM
-  !! &  to be tested
-  !!  - (2./3.) * XCMFB * MZM( ZVPTV * MYM( PLM / SQRT(PTKEM) * XG / PTHVREF ) )
-ELSE
-  ZFLX(:,:,:) = 0.
-  !! &  to be tested
-  !!  - (2./3.) * XCMFB * MZM( ZVPTV * MYM( PLM / SQRT(PTKEM) * XG / PTHVREF ) )
-END IF
-!
-ZFLX(:,:,IKE+1) = 0.  ! rigid wall condition => no turbulent flux
-!
-!
-! Nullify the flux at the ground level because it has been fully taken into
-! account in turb_ver and extrapolate the flux under the ground 
-ZFLX(:,:,IKB) = 0.
-ZFLX(:,:,IKB-1)= 2.*ZFLX(:,:,IKB) - ZFLX(:,:,IKB+1)
-!
-! stores  <V W>
-IF ( TPFILE%LOPENED .AND. OTURB_FLX ) THEN
-  TZFIELD%CMNHNAME   = 'VW_HFLX'
-  TZFIELD%CSTDNAME   = ''
-  TZFIELD%CLONGNAME  = 'VW_HFLX'
-  TZFIELD%CUNITS     = 'm2 s-2'
-  TZFIELD%CDIR       = 'XY'
-  TZFIELD%CCOMMENT   = 'X_Y_Z_VW_HFLX'
-  TZFIELD%NGRID      = 7
-  TZFIELD%NTYPE      = TYPEREAL
-  TZFIELD%NDIMS      = 3
-  TZFIELD%LTIMEDEP   = .TRUE.
-  CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZFLX)
-END IF
-!
-! compute the source for rho*V due to this residual flux ( the other part is
-! taken into account in TURB_VER)
-IF (.NOT. L2D) &
-PRVS(:,:,:) = PRVS(:,:,:) - DZF( ZFLX* MYM( PMZM_PRHODJ ) / MYM ( PDZZ ) )
-!
-!computation of the source for rho*W due to this flux
-IF (.NOT. L2D) THEN 
-  IF (.NOT. LFLAT) THEN
-    PRWS(:,:,:) = PRWS(:,:,:)                              &
-          -DYF( MZM( MYM(PRHODJ) * PINV_PDYY) * ZFLX)           &
-          +DZM( PRHODJ * MYF( MZF( ZFLX*PDZY ) * PINV_PDYY ) / MZF(PDZZ) )
-  ELSE
-    PRWS(:,:,:) = PRWS(:,:,:) - DYF( MZM( MYM(PRHODJ) * PINV_PDYY) * ZFLX)
-  END IF
-END IF
-!
-IF (KSPLT==1) THEN
-  ! 
-  !Contribution to the dynamic production of TKE:
-  !
-  IF (.NOT. L2D) THEN
-    ZWORK(:,:,:) =-MZF( MYF( ZFLX *( GZ_V_VW(PVM,PDZZ) + GY_W_VW_PWM ) ) )
-  !
-  !
-  ! evaluate the dynamic production at w(IKB+1) in PDP(IKB)
-    ZWORK(:,:,IKB:IKB) = - MYF (                                               &
-       ZFLX(:,:,IKB+1:IKB+1) *                                                 &
-     (   (PVM(:,:,IKB+1:IKB+1)-PVM(:,:,IKB:IKB)) / MYM(PDZZ(:,:,IKB+1:IKB+1))  &
-       + ( DYM( PWM(:,:,IKB+1:IKB+1) )                                         &
-          -MYM(  (PWM(:,:,IKB+2:IKB+2)-PWM(:,:,IKB+1:IKB+1))                   &
-                  /(PDZZ(:,:,IKB+2:IKB+2)+PDZZ(:,:,IKB+1:IKB+1))               &
-                +(PWM(:,:,IKB+1:IKB+1)-PWM(:,:,IKB  :IKB  ))                   &
-                  /(PDZZ(:,:,IKB+1:IKB+1)+PDZZ(:,:,IKB  :IKB  ))               &
-              ) * PDZY(:,:,IKB+1:IKB+1)                                        &
-         ) / (0.5*(PDYY(:,:,IKB+1:IKB+1)+PDYY(:,:,IKB:IKB)))                 &
-     )                        )  
-  ENDIF
-  !
-  ! dynamic production computation
-  IF (.NOT. L2D) &
-  PDP(:,:,:) = PDP(:,:,:) + ZWORK(:,:,:)  
-  !
-END IF
-!
-! Storage in the LES configuration (addition to TURB_VER computation)
-!
-IF (LLES_CALL .AND. KSPLT==1) THEN
-  CALL SECOND_MNH(ZTIME1)
-  CALL LES_MEAN_SUBGRID( MZF(MYF(ZFLX)), X_LES_SUBGRID_WV , .TRUE. )
-  CALL LES_MEAN_SUBGRID( MZF(MYF(GZ_V_VW(PVM,PDZZ)*ZFLX)),&
-                         X_LES_RES_ddxa_V_SBG_UaV , .TRUE.)
-  CALL LES_MEAN_SUBGRID( MZF(MYF(GY_W_VW(PWM,PDYY,PDZZ,PDZY)*ZFLX)),&
-                         X_LES_RES_ddxa_W_SBG_UaW , .TRUE.)
-  CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY)*MZF(ZFLX)),&
-                         X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE.)
-  IF (KRR>=1) THEN
-    CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY)*MZF(ZFLX)), &
-                           X_LES_RES_ddxa_Rt_SBG_UaW , .TRUE.)
-  END IF
-  DO JSV=1,NSV
-    CALL LES_MEAN_SUBGRID( MXF(GY_M_V(1,IKU,1,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY)*MZF(ZFLX)), &
-                           X_LES_RES_ddxa_Sv_SBG_UaW(:,:,:,JSV), .TRUE.)
-  END DO
-  CALL SECOND_MNH(ZTIME2)
-  XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
-END IF
-!
-!
-!
-END SUBROUTINE TURB_HOR_VW
-END MODULE MODE_TURB_HOR_VW
diff --git a/src/common/turb/mode_update_lm.F90 b/src/common/turb/mode_update_lm.F90
deleted file mode 100644
index d5ab737b0..000000000
--- a/src/common/turb/mode_update_lm.F90
+++ /dev/null
@@ -1,119 +0,0 @@
-!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-      MODULE MODE_UPDATE_LM
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE UPDATE_LM(HLBCX,HLBCY,PLM,PLEPS)
-!     #################################################################
-!
-!!****  *UPDATE_LM* - routine to set external points for mixing length
-!!
-!!    PURPOSE
-!!    -------
-!
-!!**  METHOD
-!!    ------
-!!   
-!!    EXTERNAL
-!!    --------   
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------ 
-!!        
-!!    REFERENCE
-!!    ---------
-!!      Book2 of documentation (routine UPDATE_LM)
-!!
-!!    AUTHOR
-!!    ------
-!!	V. Masson        * Meteo France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original    april 2006
-!!       V.Masson : Exchange of East and North sides
-!!   J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
-!  P. Wautelet 20/05/2019: add name argument to ADDnFIELD_ll + new ADD4DFIELD_ll subroutine
-!-------------------------------------------------------------------------------
-!
-!*       0.    DECLARATIONS
-!         
-USE MODD_CONF
-USE MODD_PARAMETERS
-!
-USE MODE_ll
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll
-!
-IMPLICIT NONE
-!
-!
-!*       0.1   declarations of arguments
-!
-CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X boundary type
-CHARACTER(LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y boundary type
-!
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLM   ! mixing length
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLEPS ! dissipative length
-!
-!*       0.2   declarations of local variables
-!
-INTEGER             :: IIB      ! First physical index in x direction
-INTEGER             :: IJB      ! First physical index in y direction
-INTEGER             :: IIE      ! last  physical index in x direction
-INTEGER             :: IJE      ! last  physical index in y direction
-INTEGER             :: JI       ! loop index
-!
-TYPE(LIST_ll), POINTER :: TZLM_ll   ! list of fields to exchange
-INTEGER                :: IINFO_ll       ! return code of parallel routine
-!
-!-------------------------------------------------------------------------------
-!
-!*       1.    COMPUTE DIMENSIONS OF ARRAYS :
-!              ----------------------------
-CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
-NULLIFY(TZLM_ll)
-!
-!-------------------------------------------------------------------------------
-!
-!*       2.  UPDATE HALOs :
-!            -------------
-!
-!
-!!$IF(NHALO == 1) THEN
-  CALL ADD3DFIELD_ll( TZLM_ll, PLM,   'UPDATE_LM::PLM'   )
-  CALL ADD3DFIELD_ll( TZLM_ll, PLEPS, 'UPDATE_LM::PLEPS' )
-  CALL UPDATE_HALO_ll(TZLM_ll,IINFO_ll)
-  CALL CLEANLIST_ll(TZLM_ll)
-!!$END IF
-!
-!-------------------------------------------------------------------------------
-!
-!*       3.  UPDATE EXTERNAL POINTS OF GLOBAL DOMAIN:
-!            ---------------------------------------
-!
-IF ( HLBCX(1) /= "CYCL" .AND. LWEST_ll()) THEN
-  PLM  (IIB-1,:,:) = PLM  (IIB,:,:)
-  PLEPS(IIB-1,:,:) = PLEPS(IIB,:,:)
-END IF
-IF ( HLBCX(2) /= "CYCL" .AND. LEAST_ll()) THEN
-  PLM  (IIE+1,:,:) = PLM  (IIE,:,:)
-  PLEPS(IIE+1,:,:) = PLEPS(IIE,:,:)
-END IF
-IF ( HLBCY(1) /= "CYCL" .AND. LSOUTH_ll()) THEN
-  DO JI=1,SIZE(PLM,1)
-    PLM  (JI,IJB-1,:) = PLM  (JI,IJB,:)
-    PLEPS(JI,IJB-1,:) = PLEPS(JI,IJB,:)
-  END DO
-END IF
-IF ( HLBCY(2) /= "CYCL" .AND. LNORTH_ll()) THEN
-  DO JI=1,SIZE(PLM,1)
-    PLM  (JI,IJE+1,:) = PLM  (JI,IJE,:)
-    PLEPS(JI,IJE+1,:) = PLEPS(JI,IJE,:)
-  END DO
-END IF
-!-----------------------------------------------------------------------------
-END SUBROUTINE UPDATE_LM
-END MODULE MODE_UPDATE_LM
diff --git a/src/common/turb/mode_rmc01.F90 b/src/common/turb/rmc01.F90
similarity index 95%
rename from src/common/turb/mode_rmc01.F90
rename to src/common/turb/rmc01.F90
index 628b4cad0..7488d6cbd 100644
--- a/src/common/turb/mode_rmc01.F90
+++ b/src/common/turb/rmc01.F90
@@ -1,11 +1,5 @@
-!MNH_LIC Copyright 1994-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.
-MODULE MODE_RMC01
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE RMC01(HTURBLEN,KKA,KKU,KKL,PZZ,PDXX,PDYY, &
+!     ######spl
+      SUBROUTINE RMC01(HTURBLEN,KKA,KKU,KKL,PZZ,PDXX,PDYY, &
       PDZZ,PDIRCOSZW,PSBL_DEPTH,PLMO,PLK,PLEPS)
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -239,4 +233,3 @@ PLEPS(:,:,KKU  ) = PLEPS(:,:,IKE)
 !
 IF (LHOOK) CALL DR_HOOK('RMC01',1,ZHOOK_HANDLE)
 END SUBROUTINE RMC01
-END MODULE MODE_RMC01
diff --git a/src/common/turb/mode_sbl_depth.F90 b/src/common/turb/sbl_depth.F90
similarity index 91%
rename from src/common/turb/mode_sbl_depth.F90
rename to src/common/turb/sbl_depth.F90
index e485940e0..0c670f8db 100644
--- a/src/common/turb/mode_sbl_depth.F90
+++ b/src/common/turb/sbl_depth.F90
@@ -1,10 +1,3 @@
-!MNH_LIC Copyright 1994-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.
-MODULE MODE_SBL_DEPTH
-IMPLICIT NONE
-CONTAINS
 !     ######spl
       SUBROUTINE SBL_DEPTH(KKB,KKE,PZZ,PFLXU,PFLXV,PWTHV,PLMO,PSBL_DEPTH)
       USE PARKIND1, ONLY : JPRB
@@ -48,7 +41,7 @@ CONTAINS
 USE MODD_PARAMETERS, ONLY : XUNDEF
 USE MODD_CTURB,      ONLY : XFTOP_O_FSURF, XSBL_O_BL
 !
-USE MODE_BL_DEPTH_DIAG
+USE MODI_BL_DEPTH_DIAG
 !
 IMPLICIT NONE
 !
@@ -126,4 +119,3 @@ WHERE (PLMO(:,:)==XUNDEF) PSBL_DEPTH = ZSBL_DYN
 !----------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('SBL_DEPTH',1,ZHOOK_HANDLE)
 END SUBROUTINE SBL_DEPTH
-END MODULE MODE_SBL_DEPTH
diff --git a/src/common/turb/shallow_mf.F90 b/src/common/turb/shallow_mf.F90
index b042f80a0..0f289f349 100644
--- a/src/common/turb/shallow_mf.F90
+++ b/src/common/turb/shallow_mf.F90
@@ -75,7 +75,7 @@ USE MODD_CST
 USE MODD_PARAMETERS, ONLY: JPVEXT
 USE MODD_PARAM_MFSHALL_n
 
-USE MODE_THL_RT_FROM_TH_R_MF, ONLY: THL_RT_FROM_TH_R_MF
+USE MODI_THL_RT_FROM_TH_R_MF
 USE MODE_COMPUTE_UPDRAFT, ONLY: COMPUTE_UPDRAFT
 USE MODE_COMPUTE_UPDRAFT_RHCJ10, ONLY: COMPUTE_UPDRAFT_RHCJ10
 USE MODE_COMPUTE_UPDRAFT_RAHA, ONLY: COMPUTE_UPDRAFT_RAHA
diff --git a/src/common/turb/mode_tm06.F90 b/src/common/turb/tm06.F90
similarity index 96%
rename from src/common/turb/mode_tm06.F90
rename to src/common/turb/tm06.F90
index 903ea792e..22bf99d25 100644
--- a/src/common/turb/mode_tm06.F90
+++ b/src/common/turb/tm06.F90
@@ -2,10 +2,8 @@
 !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_TM06
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2)
+!     ######spl
+      SUBROUTINE TM06(KKA,KKU,KKL,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2)
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     #################################################################
@@ -138,4 +136,3 @@ PMWTH(:,:,KKU) = PMWTH(:,:,KKU) * ZWSTAR(:,:)**2*ZTSTAR(:,:)
 !----------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('TM06',1,ZHOOK_HANDLE)
 END SUBROUTINE TM06
-END MODULE MODE_TM06
diff --git a/src/common/turb/mode_tm06_h.F90 b/src/common/turb/tm06_h.F90
similarity index 96%
rename from src/common/turb/mode_tm06_h.F90
rename to src/common/turb/tm06_h.F90
index 7d32fdd62..3162f5149 100644
--- a/src/common/turb/mode_tm06_h.F90
+++ b/src/common/turb/tm06_h.F90
@@ -2,10 +2,8 @@
 !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_TM06_H
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH)
+!     ######spl
+      SUBROUTINE TM06_H(KKB,KKTB,KKTE,PTSTEP,PZZ,PFLXZ,PBL_DEPTH)
       USE PARKIND1, ONLY : JPRB
       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 !     #################################################################
@@ -98,4 +96,3 @@ WHERE(PBL_DEPTH(:,:)/=XUNDEF) PBL_DEPTH(:,:)=MIN(PBL_DEPTH(:,:),ZBL_DEPTH(:,:)+Z
 !----------------------------------------------------------------------------
 IF (LHOOK) CALL DR_HOOK('TM06_H',1,ZHOOK_HANDLE)
 END SUBROUTINE TM06_H
-END MODULE MODE_TM06_H
diff --git a/src/common/turb/mode_tridiag.F90 b/src/common/turb/tridiag.F90
similarity index 98%
rename from src/common/turb/mode_tridiag.F90
rename to src/common/turb/tridiag.F90
index 82b2ec2b0..ee28bf7bb 100644
--- a/src/common/turb/mode_tridiag.F90
+++ b/src/common/turb/tridiag.F90
@@ -2,10 +2,8 @@
 !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_TRIDIAG
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
+!     ######spl
+       SUBROUTINE TRIDIAG(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
                                   PRHODJ,PSOURCE,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -232,4 +230,3 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE)
 !
 IF (LHOOK) CALL DR_HOOK('TRIDIAG',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG
-END MODULE MODE_TRIDIAG
diff --git a/src/common/turb/mode_tridiag_massflux.F90 b/src/common/turb/tridiag_massflux.F90
similarity index 98%
rename from src/common/turb/mode_tridiag_massflux.F90
rename to src/common/turb/tridiag_massflux.F90
index 915d75b93..401018cc0 100644
--- a/src/common/turb/mode_tridiag_massflux.F90
+++ b/src/common/turb/tridiag_massflux.F90
@@ -2,10 +2,8 @@
 !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_TRIDIAG_MASSFLUX
-IMPLICIT NONE
-CONTAINS
-SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL,  &
+!     ######spl
+       SUBROUTINE TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVARM,PF,PDFDT,PTSTEP,PIMPL,  &
                                  PDZZ,PRHODJ,PVARP             )
 
        USE PARKIND1, ONLY : JPRB
@@ -277,4 +275,3 @@ PVARP(:,KKU)=PVARP(:,KKE)
 !
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_MASSFLUX',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG_MASSFLUX
-END MODULE MODE_TRIDIAG_MASSFLUX
diff --git a/src/common/turb/mode_tridiag_thermo.F90 b/src/common/turb/tridiag_thermo.F90
similarity index 98%
rename from src/common/turb/mode_tridiag_thermo.F90
rename to src/common/turb/tridiag_thermo.F90
index 5488c69f0..7d20b2fa1 100644
--- a/src/common/turb/mode_tridiag_thermo.F90
+++ b/src/common/turb/tridiag_thermo.F90
@@ -2,10 +2,8 @@
 !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_TRIDIAG_THERMO
-IMPLICIT NONE
-CONTAINS       
-SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL,  &
+!     ######spl
+       SUBROUTINE TRIDIAG_THERMO(KKA,KKU,KKL,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL,  &
                                  PDZZ,PRHODJ,PVARP             )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -271,4 +269,3 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE)
 !
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_THERMO',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG_THERMO
-END MODULE MODE_TRIDIAG_THERMO
diff --git a/src/common/turb/mode_tridiag_tke.F90 b/src/common/turb/tridiag_tke.F90
similarity index 98%
rename from src/common/turb/mode_tridiag_tke.F90
rename to src/common/turb/tridiag_tke.F90
index 52ec08bdf..aaba12157 100644
--- a/src/common/turb/mode_tridiag_tke.F90
+++ b/src/common/turb/tridiag_tke.F90
@@ -2,10 +2,8 @@
 !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_TRIDIAG_TKE
-IMPLICIT NONE
-CONTAINS       
-SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
+!     ######spl
+       SUBROUTINE TRIDIAG_TKE(KKA,KKU,KKL,PVARM,PA,PTSTEP,PEXPL,PIMPL, &
                                   PRHODJ,PSOURCE,PDIAG,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -235,4 +233,3 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE)
 !
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_TKE',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG_TKE
-END MODULE MODE_TRIDIAG_TKE
diff --git a/src/common/turb/mode_tridiag_wind.F90 b/src/common/turb/tridiag_wind.F90
similarity index 98%
rename from src/common/turb/mode_tridiag_wind.F90
rename to src/common/turb/tridiag_wind.F90
index 65fd7256e..1f074af2b 100644
--- a/src/common/turb/mode_tridiag_wind.F90
+++ b/src/common/turb/tridiag_wind.F90
@@ -2,10 +2,8 @@
 !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_TRIDIAG_WIND
-IMPLICIT NONE
-CONTAINS       
-SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
+!     ######spl
+       SUBROUTINE TRIDIAG_WIND(KKA,KKU,KKL,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, &
                                              PRHODJA,PSOURCE,PVARP )
        USE PARKIND1, ONLY : JPRB
        USE YOMHOOK , ONLY : LHOOK, DR_HOOK
@@ -236,4 +234,3 @@ PVARP(:,:,KKU)=PVARP(:,:,IKE)
 ! 
 IF (LHOOK) CALL DR_HOOK('TRIDIAG_WIND',1,ZHOOK_HANDLE)
 END SUBROUTINE TRIDIAG_WIND
-END MODULE MODE_TRIDIAG_WIND
diff --git a/src/mesonh/turb/prandtl.f90 b/src/mesonh/turb/prandtl.f90
index 9b8455f87..fbfe0a762 100644
--- a/src/mesonh/turb/prandtl.f90
+++ b/src/mesonh/turb/prandtl.f90
@@ -185,7 +185,6 @@ END MODULE MODI_PRANDTL
 !!                                              change of YCOMMENT
 !!                     2012-02 Y. Seity,  add possibility to run with reversed 
 !!                                               vertical levels
-!!      Modifications: July 2015    (Wim de Rooy) LHARAT (Racmo turbulence) switch
 !!                     2017-09 J.Escobar, use epsilon XMNH_TINY_12 for R*4 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !! JL Redelsperger 03/2021 : adding Ocean case for temperature only 
@@ -222,7 +221,7 @@ INTEGER,                INTENT(IN)   :: KRRI          ! number of ice var.
 !
 LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
                                  ! diagnostic fields in the syncronous FM-file
-CHARACTER(LEN=4),       INTENT(IN)   ::  HTURBDIM     ! Kind of turbulence param.
+CHARACTER(len=4),       INTENT(IN)   ::  HTURBDIM     ! Kind of turbulence param.
 TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDXX,PDYY,PDZZ,PDZX,PDZY
                                                   ! metric coefficients
@@ -536,7 +535,7 @@ END IF ! end of HTURBDIM if-block
 !*          6. SAVES THE REDELSPERGER NUMBERS
 !              ------------------------------
 !
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
   !
   ! stores the RED_TH1
   TZFIELD%CMNHNAME   = 'RED_TH1'
@@ -607,5 +606,4 @@ END IF
 !
 !---------------------------------------------------------------------------
 !
-IF (LHOOK) CALL DR_HOOK('PRANDTL',1,ZHOOK_HANDLE)
 END SUBROUTINE PRANDTL
diff --git a/src/mesonh/turb/th_r_from_thl_rt_1d.f90 b/src/mesonh/turb/th_r_from_thl_rt_1d.f90
deleted file mode 100644
index 09aa2610d..000000000
--- a/src/mesonh/turb/th_r_from_thl_rt_1d.f90
+++ /dev/null
@@ -1,203 +0,0 @@
-!MNH_LIC Copyright 2006-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.
-!-----------------------------------------------------------------
-!     ######spl
-      MODULE MODI_TH_R_FROM_THL_RT_1D
-!     ###############################
-!
-      INTERFACE
-      SUBROUTINE TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE,PP,             &
-                                  PTHL, PRT, PTH, PRV, PRL, PRI,         &
-                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH     )
-CHARACTER(len=1),   INTENT(IN)    :: HFRAC_ICE
-REAL, DIMENSION(:), INTENT(INOUT) :: PFRAC_ICE
-REAL, DIMENSION(:), INTENT(IN) :: PP     ! Pressure
-REAL, DIMENSION(:), INTENT(IN) :: PTHL   ! Liquid pot. temp.
-REAL, DIMENSION(:), INTENT(IN) :: PRT    ! Total mixing ratios 
-REAL, DIMENSION(:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
-REAL, DIMENSION(:), INTENT(OUT):: PTH    ! Potential temp.
-REAL, DIMENSION(:), INTENT(OUT):: PRV    ! vapor mixing ratio
-REAL, DIMENSION(:), INTENT(INOUT):: PRL  ! cloud mixing ratio
-REAL, DIMENSION(:), INTENT(INOUT):: PRI  ! ice   mixing ratio
-REAL, DIMENSION(:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
-REAL, DIMENSION(:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
-
-      END SUBROUTINE TH_R_FROM_THL_RT_1D
-      END INTERFACE
-      END MODULE MODI_TH_R_FROM_THL_RT_1D
-!     ######spl
-      SUBROUTINE TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE,PP,             &
-                                  PTHL, PRT, PTH, PRV, PRL, PRI,         &
-                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH     )
-!     #################################################################
-!
-!
-!!****  *TH_R_FROM_THL_RT_1D* - computes the non-conservative variables
-!!                          from conservative variables
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!**  METHOD
-!!    ------
-!!    
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      Julien PERGAUD      * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         13/03/06
-!!      S. Riette April 2011 : ice added, allow ZRLTEMP to be negative
-!!                             we use dQsat/dT to help convergence
-!!                             use of optional PRR, PRS, PRG, PRH
-!!      S. Riette Nov 2016: support for HFRAC_ICE='S'
-!!
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODI_COMPUTE_FRAC_ICE
-USE MODD_CST
-USE MODD_DYN_n, ONLY : LOCEAN
-USE MODE_THERMO
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-CHARACTER(LEN=1),   INTENT(IN) :: HFRAC_ICE
-REAL, DIMENSION(:), INTENT(INOUT) :: PFRAC_ICE
-REAL, DIMENSION(:), INTENT(IN) :: PP          ! Pressure
-REAL, DIMENSION(:), INTENT(IN) :: PTHL    ! thetal to transform into th
-REAL, DIMENSION(:),INTENT(IN)  :: PRT    ! Total mixing ratios to transform into rv,rc and ri
-REAL, DIMENSION(:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
-REAL, DIMENSION(:), INTENT(OUT):: PTH    ! th
-REAL, DIMENSION(:), INTENT(OUT):: PRV    ! vapor mixing ratio
-REAL, DIMENSION(:), INTENT(INOUT):: PRL    ! vapor mixing ratio
-REAL, DIMENSION(:), INTENT(INOUT):: PRI    ! vapor mixing ratio
-REAL, DIMENSION(:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
-REAL, DIMENSION(:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
-!
-!-------------------------------------------------------------------------------
-!
-!       0.2  declaration of local variables
-INTEGER                       :: II ! Loop control
-INTEGER                       :: JITER ! number of iterations
-REAL, DIMENSION(SIZE(PTHL,1))   :: ZEXN
-REAL, DIMENSION(SIZE(PTHL,1)) :: ZRVSAT,ZCPH,ZRLTEMP,ZCPH2
-REAL, DIMENSION(SIZE(PTHL,1)) :: ZT,ZLVOCPEXN,ZLSOCPEXN
-REAL, DIMENSION(SIZE(PTHL,1)) :: ZDRSATODT,ZDRSATODTW,ZDRSATODTI
-REAL, DIMENSION(SIZE(PTHL,1)) :: ZFOESW, ZFOESI
-!----------------------------------------------------------------------------
-!
-!*      1 Initialisation
-!         --------------
-!
-!
-!
-!Number of iterations
-JITER=2
-!
-!Computation of ZCPH2 depending on dummy arguments received
-ZCPH2(:)=0
-IF(PRESENT(PRR)) ZCPH2(:)=ZCPH2(:) + XCL*PRR(:)
-IF(PRESENT(PRS)) ZCPH2(:)=ZCPH2(:) + XCI*PRS(:)
-IF(PRESENT(PRG)) ZCPH2(:)=ZCPH2(:) + XCI*PRG(:)
-IF(PRESENT(PRH)) ZCPH2(:)=ZCPH2(:) + XCI*PRH(:)
-!
-!Computation of an approximate state thanks to PRL and PRI guess
-ZEXN(:)=(PP(:)/XP00) ** (XRD/XCPD)
-ZT(:)=PTHL(:)*ZEXN(:)
-PRV(:)=PRT(:)-PRL(:)-PRI(:)
-ZCPH(:)=XCPD+ XCPV * PRV(:)+ XCL * PRL(:) + XCI * PRI(:) + ZCPH2(:)
-ZLVOCPEXN(:) = (XLVTT + (XCPV-XCL) * (ZT(:)-XTT)) &
-                        /(ZCPH(:)*ZEXN(:))
-ZLSOCPEXN(:) = (XLSTT + (XCPV-XCI) * (ZT(:)-XTT)) &
-                        /(ZCPH(:)*ZEXN(:))
-PTH(:)=PTHL(:)+ZLVOCPEXN(:)*PRL(:)+ZLSOCPEXN(:)*PRI(:)
-!
-!
-!       2 Iteration
-!         ---------
-
-DO II=1,JITER
-  IF (LOCEAN) THEN
-    ZT=PTH                  
-  ELSE
-    ZT(:)=PTH(:)*ZEXN(:)
-  END IF
-  !Computation of liquid/ice fractions
-  PFRAC_ICE(:) = 0.
-  WHERE(PRL(:)+PRI(:) > 1.E-20)
-    PFRAC_ICE(:) = PRI(:) / (PRL(:)+PRI(:))
-  ENDWHERE
-  CALL COMPUTE_FRAC_ICE(HFRAC_ICE,PFRAC_ICE(:),ZT(:))
-
-  !Computation of Rvsat and dRsat/dT
-  !In this version QSAT, QSATI, DQSAT and DQASATI functions are not used
-  !due to performance issue
-  ZFOESW(:) = MIN(EXP( XALPW - XBETAW/ZT(:) - XGAMW*LOG(ZT(:))  ), 0.99*PP(:))
-  ZFOESI(:) = MIN(EXP( XALPI - XBETAI/ZT(:) - XGAMI*LOG(ZT(:))  ), 0.99*PP(:))
-  PRSATW(:) = XRD/XRV*ZFOESW(:)/PP(:) / (1.+(XRD/XRV-1.)*ZFOESW(:)/PP(:))
-  PRSATI(:) = XRD/XRV*ZFOESI(:)/PP(:) / (1.+(XRD/XRV-1.)*ZFOESI(:)/PP(:))
-  ZDRSATODTW(:) = PRSATW(:) / (1.+(XRD/XRV-1.)*ZFOESW(:)/PP(:) ) &
-                   * (XBETAW/ZT(:)**2 - XGAMW/ZT(:))*(1+PRT(:))
-  ZDRSATODTI(:) = PRSATI(:) / (1.+(XRD/XRV-1.)*ZFOESI(:)/PP(:) ) &
-                   * (XBETAI/ZT(:)**2 - XGAMI/ZT(:))*(1+PRT(:))
-  !PRSATW(:) =  QSAT(ZT(:),PP(:)) !qsatw
-  !PRSATI(:) = QSATI(ZT(:),PP(:)) !qsati
-  !ZDRSATODTW(:) =  DQSAT(ZT(:),PP(:),PRSATW(:))*(1+PRT(:))
-  !ZDRSATODTI(:) = DQSATI(ZT(:),PP(:),PRSATI(:))*(1+PRT(:))
-  PRSATW(:) = PRSATW(:)*(1+PRT(:))
-  PRSATI(:) = PRSATI(:)*(1+PRT(:))
-  ZRVSAT(:) = PRSATW(:)*(1-PFRAC_ICE(:)) + PRSATI(:)*PFRAC_ICE(:)
-  ZDRSATODT(:) = (ZDRSATODTW(:)*(1-PFRAC_ICE(:))+ &
-            & ZDRSATODTI(:)*PFRAC_ICE(:))
-
-  !Computation of new PRL, PRI and PRV
-  !Correction term applied to (PRV(:)-ZRVSAT(:)) is computed assuming that
-  !ZLVOCPEXN, ZLSOCPEXN and ZCPH don't vary to much with T. It takes into account
-  !the variation (estimated linear) of Qsat with T
-  ZRLTEMP(:)=(PRV(:)-ZRVSAT(:))/ &
-                &(1 + ZDRSATODT(:)*ZEXN(:)* &
-                &     (ZLVOCPEXN(:)*(1-PFRAC_ICE(:))+ZLSOCPEXN(:)*PFRAC_ICE(:)))
-  ZRLTEMP(:)=MIN(MAX(-PRL(:)-PRI(:), ZRLTEMP(:)),PRV(:))
-  PRV(:)=PRV(:)-ZRLTEMP(:)
-  PRL(:)=PRL(:)+PRI(:)+ZRLTEMP(:)
-  PRI(:)=PFRAC_ICE(:)     * (PRL(:))
-  PRL(:)=(1-PFRAC_ICE(:)) * (PRT(:) - PRV(:))
-
-  !Computation of Cph (as defined in Meso-NH doc, equation 2.2, to be used with mixing ratios)
-  ZCPH(:)=XCPD+ XCPV * PRV(:)+ XCL * PRL(:) + XCI * PRI(:) + ZCPH2(:)
-
-  !Computation of L/Cph/EXN, then new PTH
-  ZLVOCPEXN(:) = (XLVTT + (XCPV-XCL) * (ZT(:)-XTT)) &
-                    /(ZCPH(:)*ZEXN(:))
-  ZLSOCPEXN(:) = (XLSTT + (XCPV-XCI) * (ZT(:)-XTT)) &
-                    /(ZCPH(:)*ZEXN(:))
-  PTH(:)=PTHL(:)+ZLVOCPEXN(:)*PRL(:)+ZLSOCPEXN(:)*PRI(:)
-
-  !Computation of estimated mixing ration at saturation
-  !To compute the adjustement a first order development was used
-  PRSATW(:)=PRSATW(:) + ZDRSATODTW(:)*(PTH(:)*ZEXN(:)-ZT(:))
-  PRSATI(:)=PRSATI(:) + ZDRSATODTI(:)*(PTH(:)*ZEXN(:)-ZT(:))
-ENDDO
-
-
-END SUBROUTINE TH_R_FROM_THL_RT_1D
diff --git a/src/mesonh/turb/th_r_from_thl_rt_2d.f90 b/src/mesonh/turb/th_r_from_thl_rt_2d.f90
deleted file mode 100644
index d610a72bd..000000000
--- a/src/mesonh/turb/th_r_from_thl_rt_2d.f90
+++ /dev/null
@@ -1,128 +0,0 @@
-!MNH_LIC Copyright 2006-2019 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     ######spl
-      MODULE MODI_TH_R_FROM_THL_RT_2D
-      INTERFACE
-      SUBROUTINE TH_R_FROM_THL_RT_2D(HFRAC_ICE,PFRAC_ICE,PP,             &
-                                  PTHL, PRT, PTH, PRV, PRL, PRI,         &
-                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH     )
-CHARACTER(len=1),     INTENT(IN) :: HFRAC_ICE
-REAL, DIMENSION(:,:), INTENT(INOUT) :: PFRAC_ICE
-REAL, DIMENSION(:,:), INTENT(IN) :: PP          ! Pressure
-REAL, DIMENSION(:,:), INTENT(IN) :: PTHL    ! thetal to transform into th
-REAL, DIMENSION(:,:),INTENT(IN)  :: PRT    ! Total mixing ratios to transform into rv,rc and ri
-REAL, DIMENSION(:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
-REAL, DIMENSION(:,:), INTENT(OUT):: PTH    ! th
-REAL, DIMENSION(:,:), INTENT(OUT):: PRV    ! vapor mixing ratio
-REAL, DIMENSION(:,:), INTENT(INOUT):: PRL    ! vapor mixing ratio
-REAL, DIMENSION(:,:), INTENT(INOUT):: PRI    ! vapor mixing ratio
-REAL, DIMENSION(:,:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
-REAL, DIMENSION(:,:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
-
-      END SUBROUTINE TH_R_FROM_THL_RT_2D
-
-      END INTERFACE
-
-      END MODULE MODI_TH_R_FROM_THL_RT_2D
-
-!     ######spl
-      SUBROUTINE TH_R_FROM_THL_RT_2D(HFRAC_ICE,PFRAC_ICE,PP,             &
-                                  PTHL, PRT, PTH, PRV, PRL, PRI,         &
-                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH     )
-!     #################################################################
-!
-!
-!!****  *TH_R_FROM_THL_RT_2D* - computes the non-conservative variables
-!!                          from conservative variables
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!**  METHOD
-!!    ------
-!!    
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      Julien PERGAUD      * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         13/03/06
-!!      Sébastien Riette April 2011: code moved in th_r_from_thl_rt_3D
-!!
-!! --------------------------------------------------------------------------
-!       
-!*      0. DECLARATIONS
-!          ------------
-!
-!
-USE MODI_TH_R_FROM_THL_RT_3D
-
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-CHARACTER(LEN=1),     INTENT(IN) :: HFRAC_ICE
-REAL, DIMENSION(:,:), INTENT(INOUT) :: PFRAC_ICE
-REAL, DIMENSION(:,:), INTENT(IN) :: PP     ! Pressure
-REAL, DIMENSION(:,:), INTENT(IN) :: PTHL   ! Liquid pot. temp.
-REAL, DIMENSION(:,:), INTENT(IN) :: PRT    ! Total mixing ratios
-REAL, DIMENSION(:,:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
-REAL, DIMENSION(:,:), INTENT(OUT):: PTH    ! Potential temp.
-REAL, DIMENSION(:,:), INTENT(OUT):: PRV    ! vapor mixing ratio
-REAL, DIMENSION(:,:), INTENT(INOUT):: PRL  ! cloud mixing ratio
-REAL, DIMENSION(:,:), INTENT(INOUT):: PRI  ! ice   mixing ratio
-REAL, DIMENSION(:,:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
-REAL, DIMENSION(:,:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
-
-!
-!-------------------------------------------------------------------------------
-!
-!       0.2  declaration of local variables
-!
-!----------------------------------------------------------------------------
-!
-REAL, DIMENSION(SIZE(PP,1),SIZE(PP,2)) :: ZRR, ZRS, ZRG, ZRH
-INTEGER :: JK
-!----------------------------------------------------------------------------
-!
-!*      1 Initialisation
-!         --------------
-!
-ZRR(:,:)=0.
-ZRS(:,:)=0.
-ZRG(:,:)=0.
-ZRH(:,:)=0.
-IF(PRESENT(PRR)) ZRR(:,:)=PRR(:,:)
-IF(PRESENT(PRS)) ZRS(:,:)=PRS(:,:)
-IF(PRESENT(PRG)) ZRG(:,:)=PRG(:,:)
-IF(PRESENT(PRH)) ZRH(:,:)=PRH(:,:)
-!
-!
-!       2 Call of 1d version
-!         ------------------
-DO JK=1, SIZE(PTHL,2)
-  CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE(:,JK),PP(:,JK),             &
-                                PTHL(:,JK), PRT(:,JK), PTH(:,JK),       &
-                                PRV(:,JK), PRL(:,JK), PRI(:,JK),        &
-                                PRSATW(:,JK), PRSATI(:,JK),                &
-                                ZRR(:,JK), ZRS(:,JK), ZRG(:,JK), ZRH(:,JK))
-ENDDO
-
-
-END SUBROUTINE TH_R_FROM_THL_RT_2D
diff --git a/src/mesonh/turb/th_r_from_thl_rt_3d.f90 b/src/mesonh/turb/th_r_from_thl_rt_3d.f90
deleted file mode 100644
index 0591be50c..000000000
--- a/src/mesonh/turb/th_r_from_thl_rt_3d.f90
+++ /dev/null
@@ -1,126 +0,0 @@
-!MNH_LIC Copyright 2011-2019 CNRS, Meteo-France and Universite Paul Sabatier
-!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
-!MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!     ######spl
-      MODULE MODI_TH_R_FROM_THL_RT_3D
-!     ###############################
-INTERFACE
-!
-      SUBROUTINE TH_R_FROM_THL_RT_3D(HFRAC_ICE,PFRAC_ICE,PP,             &
-                                  PTHL, PRT, PTH, PRV, PRL, PRI, &
-                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH       )
-
-CHARACTER(len=1),       INTENT(IN) :: HFRAC_ICE
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFRAC_ICE
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PP          ! Pressure
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHL    ! thetal to transform into th
-REAL, DIMENSION(:,:,:),INTENT(IN)  :: PRT    ! Total mixing ratios to transform into rv,rc and ri
-REAL, DIMENSION(:,:,:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
-REAL, DIMENSION(:,:,:), INTENT(OUT):: PTH    ! th
-REAL, DIMENSION(:,:,:), INTENT(OUT):: PRV    ! vapor mixing ratio
-REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRL    ! vapor mixing ratio
-REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRI    ! vapor mixing ratio
-REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
-REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
-!
-END SUBROUTINE TH_R_FROM_THL_RT_3D
-!
-END INTERFACE
-!
-END MODULE MODI_TH_R_FROM_THL_RT_3D
-!     ######spl
-      SUBROUTINE TH_R_FROM_THL_RT_3D(HFRAC_ICE,PFRAC_ICE,PP,             &
-                                  PTHL, PRT, PTH, PRV, PRL, PRI, &
-                                  PRSATW, PRSATI, PRR, PRS, PRG, PRH       )
-!     #################################################################
-!
-!
-!!****  *TH_R_FROM_THL_RT_3D* - computes the non-conservative variables
-!!                          from conservative variables
-!!
-!!    PURPOSE
-!!    -------
-!!
-!!**  METHOD
-!!    ------
-!!
-!!
-!!    EXTERNAL
-!!    --------
-!!
-!!    IMPLICIT ARGUMENTS
-!!    ------------------
-!!
-!!
-!!    REFERENCE
-!!    ---------
-!!
-!!    AUTHOR
-!!    ------
-!!      Julien PERGAUD      * Meteo-France *
-!!
-!!    MODIFICATIONS
-!!    -------------
-!!      Original         15/03/2011
-!!      S. Riette April 2011 : code moved in th_r_from_thl_rt_1d
-!!
-!! --------------------------------------------------------------------------
-!
-!*      0. DECLARATIONS
-!          ------------
-!
-USE MODI_TH_R_FROM_THL_RT_1D
-!
-IMPLICIT NONE
-!
-!
-!*      0.1  declarations of arguments
-!
-CHARACTER(LEN=1),       INTENT(IN) :: HFRAC_ICE
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PFRAC_ICE
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PP          ! Pressure
-REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHL    ! thetal to transform into th
-REAL, DIMENSION(:,:,:),INTENT(IN)  :: PRT    ! Total mixing ratios to transform into rv,rc and ri
-REAL, DIMENSION(:,:,:),OPTIONAL,INTENT(IN) :: PRR, PRS, PRG, PRH
-REAL, DIMENSION(:,:,:), INTENT(OUT):: PTH    ! th
-REAL, DIMENSION(:,:,:), INTENT(OUT):: PRV    ! vapor mixing ratio
-REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRL    ! vapor mixing ratio
-REAL, DIMENSION(:,:,:), INTENT(INOUT):: PRI    ! vapor mixing ratio
-REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PRSATW ! estimated mixing ration at saturation over water
-REAL, DIMENSION(:,:,:), INTENT(OUT)  :: PRSATI ! estimated mixing ration at saturation over ice
-!
-!-------------------------------------------------------------------------------
-!
-!       0.2  declaration of local variables
-REAL, DIMENSION(SIZE(PTHL,1),SIZE(PTHL,2),SIZE(PTHL,3)) :: ZRR, ZRS, ZRG, ZRH
-INTEGER :: JJ, JK
-!----------------------------------------------------------------------------
-!
-!*      1 Initialisation
-!         --------------
-!
-ZRR(:,:,:)=0.
-ZRS(:,:,:)=0.
-ZRG(:,:,:)=0.
-ZRH(:,:,:)=0.
-IF(PRESENT(PRR)) ZRR(:,:,:)=PRR(:,:,:)
-IF(PRESENT(PRS)) ZRS(:,:,:)=PRS(:,:,:)
-IF(PRESENT(PRG)) ZRG(:,:,:)=PRG(:,:,:)
-IF(PRESENT(PRH)) ZRH(:,:,:)=PRH(:,:,:)
-!
-!
-!       2 Call of 1d version
-!         ------------------
-DO JK=1, SIZE(PTHL,3)
-  DO JJ=1, SIZE(PTHL,2)
-    CALL TH_R_FROM_THL_RT_1D(HFRAC_ICE,PFRAC_ICE(:,JJ,JK),PP(:,JJ,JK),             &
-                                  PTHL(:,JJ,JK), PRT(:,JJ,JK), PTH(:,JJ,JK),       &
-                                  PRV(:,JJ,JK), PRL(:,JJ,JK), PRI(:,JJ,JK),        &
-                                  PRSATW(:,JJ,JK), PRSATI(:,JJ,JK),                &
-                                  ZRR(:,JJ,JK), ZRS(:,JJ,JK), ZRG(:,JJ,JK), ZRH(:,JJ,JK))
-  ENDDO
-ENDDO
-
-END SUBROUTINE TH_R_FROM_THL_RT_3D
diff --git a/src/mesonh/turb/turb.f90 b/src/mesonh/turb/turb.f90
index 2948f8357..228241e2c 100644
--- a/src/mesonh/turb/turb.f90
+++ b/src/mesonh/turb/turb.f90
@@ -230,7 +230,7 @@ END MODULE MODI_TURB
 !!    IMPLICIT ARGUMENTS
 !!    ------------------
 !!
-!!       MODD_PARAMETERS : JPVEXT_TURB  number of marginal vertical points
+!!       MODD_PARAMETERS : JPVEXT  number of marginal vertical points
 !!
 !!       MODD_CONF      : CCONF model configuration (start/restart)
 !!                        L1D   switch for 1D model version
@@ -335,9 +335,6 @@ END MODULE MODI_TURB
 !!                                          vertical levels
 !!                     10/2012 (J. Colin) Correct bug in DearDoff for dry simulations
 !!                     10/2012 J.Escobar Bypass PGI bug , redefine some allocatable array inplace of automatic
-!!                     2014-11 Y. Seity,  add output terms for TKE DDHs budgets
-!!                     July 2015 (Wim de Rooy)  modifications to run with RACMO
-!!                                              turbulence (LHARAT=TRUE)
 !!                     04/2016  (C.Lac) correction of negativity for KHKO
 !  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
 !  Q. Rodier      01/2018: introduction of RM17
@@ -354,16 +351,16 @@ END MODULE MODI_TURB
 !*      0. DECLARATIONS
 !          ------------
 !
-USE MODD_BUDGET, ONLY: LBUDGET_U,  LBUDGET_V,  LBUDGET_W,  LBUDGET_TH, LBUDGET_RV, LBUDGET_RC,  &
-                            LBUDGET_RR, LBUDGET_RI, LBUDGET_RS, LBUDGET_RG, LBUDGET_RH, LBUDGET_SV,  &
+use modd_budget,      only: lbudget_u,  lbudget_v,  lbudget_w,  lbudget_th, lbudget_rv, lbudget_rc,  &
+                            lbudget_rr, lbudget_ri, lbudget_rs, lbudget_rg, lbudget_rh, lbudget_sv,  &
                             NBUDGET_U,  NBUDGET_V,  NBUDGET_W,  NBUDGET_TH, NBUDGET_RV, NBUDGET_RC,  &
                             NBUDGET_RR, NBUDGET_RI, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, NBUDGET_SV1, &
-                            TBUDGETS
+                            tbudgets
 USE MODD_CONF
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_DYN_n, ONLY : LOCEAN
-USE MODD_FIELD, ONLY: TFIELDDATA,TYPEREAL
+use modd_field,          only: tfielddata, TYPEREAL
 USE MODD_IO, ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_NSV
@@ -380,6 +377,7 @@ USE MODI_ROTATE_WIND
 USE MODI_TURB_HOR_SPLT 
 USE MODI_TKE_EPS_SOURCES
 USE MODI_SHUMAN
+USE MODI_GRADIENT_M
 USE MODI_LES_MEAN_SUBGRID
 USE MODI_RMC01
 USE MODI_GRADIENT_W
@@ -387,10 +385,10 @@ USE MODI_TM06
 USE MODI_UPDATE_LM
 USE MODI_GET_HALO
 !
-USE MODE_BUDGET,         ONLY: BUDGET_STORE_INIT, BUDGET_STORE_END
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
+use mode_budget,         only: Budget_store_init, Budget_store_end
+USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_SBL
-USE MODE_SOURES_NEG_CORRECT, ONLY: SOURCES_NEG_CORRECT
+use mode_sources_neg_correct, only: Sources_neg_correct
 !
 USE MODI_EMOIST
 USE MODI_ETHETA
@@ -424,11 +422,11 @@ LOGICAL,                INTENT(IN)   ::  OTURB_DIAG   ! switch to write some
 LOGICAL,                INTENT(IN)   ::  OSUBG_COND   ! switch for SUBGrid 
                                  ! CONDensation
 LOGICAL,                INTENT(IN)   ::  ORMC01       ! switch for RMC01 lengths in SBL
-CHARACTER(LEN=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+CHARACTER(len=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
                                                       ! turbulence scheme
-CHARACTER(LEN=4),       INTENT(IN)   ::  HTURBLEN     ! kind of mixing length
-CHARACTER(LEN=4),       INTENT(IN)   ::  HTOM         ! kind of Third Order Moment
-CHARACTER(LEN=4),       INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing length
+CHARACTER(len=4),       INTENT(IN)   ::  HTURBLEN     ! kind of mixing length
+CHARACTER(len=4),       INTENT(IN)   ::  HTOM         ! kind of Third Order Moment
+CHARACTER(len=4),       INTENT(IN)   ::  HTURBLEN_CL  ! kind of cloud mixing length
 REAL,                   INTENT(IN)   ::  PIMPL        ! degree of implicitness
 CHARACTER (LEN=4),      INTENT(IN)   ::  HCLOUD       ! Kind of microphysical scheme
 REAL,                   INTENT(IN)   ::  PTSTEP       ! timestep 
@@ -557,6 +555,7 @@ REAL                :: ZALPHA       ! work coefficient :
 !                                   !   BL89 mixing length near the surface
 !
 REAL :: ZTIME1, ZTIME2
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZTT,ZEXNE,ZLV,ZLS,ZCPH,ZCOR
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3))::  ZSHEAR, ZDUDZ, ZDVDZ
 TYPE(TFIELDDATA) :: TZFIELD
 !
@@ -699,7 +698,7 @@ IF (KRRL >=1) THEN
   END IF
 !
 !
-  IF ( TPFILE%LOPENED .AND. OTURB_DIAG ) THEN
+  IF ( tpfile%lopened .AND. OTURB_DIAG ) THEN
     TZFIELD%CMNHNAME   = 'ATHETA'
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CLONGNAME  = 'ATHETA'
@@ -710,7 +709,7 @@ IF (KRRL >=1) THEN
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
     TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZATHETA)
+    CALL IO_Field_write(TPFILE,TZFIELD,ZATHETA)
 ! 
     TZFIELD%CMNHNAME   = 'AMOIST'
     TZFIELD%CSTDNAME   = ''
@@ -722,7 +721,7 @@ IF (KRRL >=1) THEN
     TZFIELD%NTYPE      = TYPEREAL
     TZFIELD%NDIMS      = 3
     TZFIELD%LTIMEDEP   = .TRUE.
-    CALL IO_FIELD_WRITE(TPFILE,TZFIELD,ZAMOIST)
+    CALL IO_Field_write(TPFILE,TZFIELD,ZAMOIST)
   END IF
 !
 ELSE
@@ -826,6 +825,8 @@ SELECT CASE (HTURBLEN)
 !
 END SELECT
 !
+!
+!
 !*      3.5 Mixing length modification for cloud
 !           -----------------------
 IF (KMODEL_CL==KMI .AND. HTURBLEN_CL/='NONE') CALL CLOUD_MODIF_LM
@@ -1147,7 +1148,7 @@ CALL TKE_EPS_SOURCES(KKA,KKU,KKL,KMI,PTKET,PLEM,ZLEPS,PDYP,ZTRH,     &
 !*      7. STORES SOME INFORMATIONS RELATED TO THE TURBULENCE SCHEME
 !          ---------------------------------------------------------
 !
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
 ! 
 ! stores the mixing length
 ! 
@@ -1286,6 +1287,9 @@ IF (LLES_CALL) THEN
   CALL SECOND_MNH(ZTIME2)
   XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
 END IF
+
+!
+
 !
 !----------------------------------------------------------------------------
 !
@@ -1504,6 +1508,7 @@ ELSE
     END IF
   END IF
 END IF
+
 !
 !  mixing length limited by the distance normal to the surface 
 !  (with the same factor as for BL89)
@@ -1814,7 +1819,7 @@ ENDIF
 !              -----------------------------------------------
 !
 ! Impression before modification of the mixing length
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
   TZFIELD%CMNHNAME   = 'LM_CLEAR_SKY'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'LM_CLEAR_SKY'
@@ -1840,7 +1845,7 @@ WHERE (PCEI(:,:,:) == -1.) PLEM(:,:,:) = ZLM_CLOUD(:,:,:)
 !*       5.    IMPRESSION
 !              ----------
 !
-IF ( OTURB_DIAG .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_DIAG .AND. tpfile%lopened ) THEN
   TZFIELD%CMNHNAME   = 'COEF_AMPL'
   TZFIELD%CSTDNAME   = ''
   TZFIELD%CLONGNAME  = 'COEF_AMPL'
diff --git a/src/mesonh/turb/turb_ver.f90 b/src/mesonh/turb/turb_ver.f90
index 420617b50..4117d8191 100644
--- a/src/mesonh/turb/turb_ver.f90
+++ b/src/mesonh/turb/turb_ver.f90
@@ -3,7 +3,12 @@
 !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_TURB_VER 
+!    ####################
+!
+INTERFACE 
+!
       SUBROUTINE TURB_VER(KKA,KKU,KKL,KRR,KRRL,KRRI,                &
                       OTURB_FLX,                                    &
                       HTURBDIM,HTOM,PIMPL,PEXPL,                    &
@@ -14,7 +19,7 @@
                       PSFTHM,PSFRM,PSFSVM,PSFTHP,PSFRP,PSFSVP,      &
                       PCDUEFF,PTAU11M,PTAU12M,PTAU33M,              &
                       PUM,PVM,PWM,PUSLOPEM,PVSLOPEM,PTHLM,PRM,PSVM, &
-                      PTKEM,PLM,PLENGTHM,PLENGTHH,PLEPS,MFMOIST,    &
+                      PTKEM,PLM,PLEPS,                              &
                       PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE,    &
                       PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH,        &
                       PSBL_DEPTH,PLMO,                              &
@@ -250,7 +255,7 @@ END MODULE MODI_TURB_VER
 !!           XCTV,XCHV   : cts for the T and moisture variances
 !!
 !!      Module MODD_PARAMETERS
-!!
+!!  
 !!           JPVEXT_TURB     : number of vertical external points
 !!           JPHEXT     : number of horizontal external points
 !!
@@ -305,7 +310,6 @@ END MODULE MODI_TURB_VER
 !!                                 reversed vertical levels
 !!                     10/2012 (J.Escobar) Bypass PGI bug , redefine some allocatable array inplace of automatic
 !!                     08/2014 (J.Escobar) Bypass PGI memory leak bug , replace IF statement with IF THEN ENDIF
-!!      Modifications: July,    2015  (Wim de Rooy) switch for HARATU (Racmo turbulence scheme)
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !! JL Redelsperger 03/2021 : add Ocean LES case
 !!--------------------------------------------------------------------------
@@ -313,13 +317,10 @@ END MODULE MODI_TURB_VER
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_DYN_n,          ONLY: LOCEAN
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
+use modd_field,          only: tfielddata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
@@ -338,11 +339,11 @@ USE MODI_TURB_VER_SV_FLUX
 USE MODI_TURB_VER_SV_CORR
 USE MODI_LES_MEAN_SUBGRID
 USE MODI_SBL_DEPTH
-USE MODI_SECOND_MNH
 !
 USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_PRANDTL
 !
+USE MODI_SECOND_MNH
 !
 IMPLICIT NONE
 !
@@ -376,9 +377,6 @@ REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE    ! sinus of the angle
                                       ! between i and the slope vector
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
-! MFMOIST used in case of LHARATU
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST       ! moist mass flux dual scheme
-
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! ref. state Virtual 
                                                       ! Potential Temperature 
 !
@@ -407,9 +405,6 @@ REAL, DIMENSION(:,:),   INTENT(IN)   ::  PVSLOPEM     ! wind component along the
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
-! PLENGTHM PLENGTHH used in case of LHARATU
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLENGTHM     ! Turb. mixing length momentum
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLENGTHH     ! Turb. mixing length heat/moisture 
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS        ! dissipative length
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
@@ -473,7 +468,6 @@ REAL, ALLOCATABLE, DIMENSION(:,:,:,:)  ::  &
        ZREDS1,   & ! 1D Redelsperger number R_sv
        ZRED2THS, & ! 3D Redelsperger number R*2_thsv
        ZRED2RS     ! 3D Redelsperger number R*2_rsv
-REAL, DIMENSION(SIZE(PLM,1),SIZE(PLM,2),SIZE(PLM,3))  ::  ZLM
 !
 LOGICAL :: GUSERV    ! flag to use water vapor
 INTEGER :: IKB,IKE   ! index value for the Beginning
@@ -481,7 +475,6 @@ INTEGER :: IKB,IKE   ! index value for the Beginning
 INTEGER :: JSV       ! loop counter on scalar variables
 REAL    :: ZTIME1
 REAL    :: ZTIME2
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
 TYPE(TFIELDDATA) :: TZFIELD
 !----------------------------------------------------------------------------
 ALLOCATE (      ZBETA(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))    ,&
@@ -516,8 +509,6 @@ ALLOCATE ( &
 !*       1.   PRELIMINARIES
 !             -------------
 !
-IF (LHOOK) CALL DR_HOOK('TURB_VER',0,ZHOOK_HANDLE)
-!
 IKB=KKA+JPVEXT_TURB*KKL
 IKE=KKU-JPVEXT_TURB*KKL
 !
@@ -551,26 +542,25 @@ ZSQRT_TKE = SQRT(PTKEM)
 !
 ! gradients of mean quantities at previous time-step
 !
-ZDTH_DZ = GZ_M_W(PTHLM(:,:,:),PDZZ, KKA, KKU, KKL)
+ZDTH_DZ = GZ_M_W(KKA,KKU,KKL,PTHLM(:,:,:),PDZZ)
 ZDR_DZ  = 0.
-IF (KRR>0) ZDR_DZ  = GZ_M_W(PRM(:,:,:,1),PDZZ, KKA, KKU, KKL)
+IF (KRR>0) THEN
+ZDR_DZ  = GZ_M_W(KKA,KKU,KKL,PRM(:,:,:,1),PDZZ)
+ENDIF
 !
 !
 ! Denominator factor in 3rd order terms
 !
-IF (.NOT. LHARAT) THEN
-  ZD(:,:,:) = (1.+ZREDTH1+ZREDR1) * (1.+0.5*(ZREDTH1+ZREDR1))
-ELSE
-  ZD(:,:,:) = 1.
-ENDIF
+ZD(:,:,:) = (1.+ZREDTH1+ZREDR1) * (1.+0.5*(ZREDTH1+ZREDR1))
 !
 ! Phi3 and Psi3 Prandtl numbers
 !
 GUSERV = KRR/=0
 !
 ZPHI3 = PHI3(ZREDTH1,ZREDR1,ZRED2TH3,ZRED2R3,ZRED2THR3,HTURBDIM,GUSERV)
-IF(KRR/=0) &
+IF(KRR/=0) THEN
 ZPSI3 = PSI3(ZREDR1,ZREDTH1,ZRED2R3,ZRED2TH3,ZRED2THR3,HTURBDIM,GUSERV)
+ENDIF
 !
 ! Prandtl numbers for scalars
 !
@@ -601,12 +591,6 @@ END IF
 !*       4.   TURBULENT CORRELATIONS : <w Rc>, <THl THl>, <THl Rnp>, <Rnp Rnp>
 !             ----------------------------------------------------------------
 !
-
-IF (LHARAT) THEN
-  ZLM=PLENGTHH
-ELSE
-  ZLM=PLM
-ENDIF
 !
   CALL  TURB_VER_THERMO_FLUX(KKA,KKU,KKL,KRR,KRRL,KRRI,               &
                         OTURB_FLX,HTURBDIM,HTOM,                      &
@@ -616,14 +600,13 @@ ENDIF
                         PRHODJ,PTHVREF,                               &
                         PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
                         PWM,PTHLM,PRM,PSVM,                           &
-                        PTKEM,ZLM,PLEPS,                         &
+                        PTKEM,PLM,PLEPS,                              &
                         PLOCPEXNM,PATHETA,PAMOIST,PSRCM,PFRAC_ICE,    &
                         ZBETA, ZSQRT_TKE, ZDTH_DZ, ZDR_DZ, ZRED2TH3,  &
                         ZRED2R3, ZRED2THR3, ZBLL_O_E, ZETHETA,        &
                         ZEMOIST, ZREDTH1, ZREDR1, ZPHI3, ZPSI3, ZD,   &
-                        PFWTH,PFWR,PFTH2,PFR2,PFTHR,                  &
-                        MFMOIST,PBL_DEPTH,ZWTHV,                      &
-                        PRTHLS,PRRS,ZTHLP,ZRP,PTP,PWTH,PWRC )
+                        PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH,ZWTHV,  &
+                        PRTHLS,PRRS,ZTHLP,ZRP,PTP,PWTH,PWRC           )
 !
   CALL  TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,               &
                         OTURB_FLX,HTURBDIM,HTOM,                      &
@@ -633,13 +616,13 @@ ENDIF
                         PRHODJ,PTHVREF,                               &
                         PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
                         PWM,PTHLM,PRM,PSVM,                           &
-                        PTKEM,ZLM,PLEPS,                              &
+                        PTKEM,PLM,PLEPS,                              &
                         PLOCPEXNM,PATHETA,PAMOIST,PSRCM,              &
                         ZBETA, ZSQRT_TKE, ZDTH_DZ, ZDR_DZ, ZRED2TH3,  &
                         ZRED2R3, ZRED2THR3, ZBLL_O_E, ZETHETA,        &
                         ZEMOIST, ZREDTH1, ZREDR1, ZPHI3, ZPSI3, ZD,   &
                         PFWTH,PFWR,PFTH2,PFR2,PFTHR,                  &
-                        ZTHLP,ZRP,MFMOIST,PSIGS                  )
+                        ZTHLP,ZRP,PSIGS                          )
 !
 !----------------------------------------------------------------------------
 !
@@ -654,9 +637,6 @@ ENDIF
 !*       7.   DIAGNOSTIC COMPUTATION OF THE 1D <W W> VARIANCE
 !             -----------------------------------------------
 !
-!
-IF (LHARAT) ZLM=PLENGTHM
-!
 CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
                       OTURB_FLX,KRR,                                &
                       HTURBDIM,PIMPL,PEXPL,PTSTEP,                  &
@@ -666,7 +646,7 @@ CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
                       PRHODJ,                                       &
                       PCDUEFF,PTAU11M,PTAU12M,PTAU33M,              &
                       PTHLM,PRM,PSVM,PUM,PVM,PWM,PUSLOPEM,PVSLOPEM, &
-                      PTKEM,ZLM,MFMOIST,ZWU,ZWV,                    &
+                      PTKEM,PLM,ZWU,ZWV,                            &
                       PRUS,PRVS,PRWS,                               &
                       PDP,PTP                                       )
 !
@@ -676,8 +656,6 @@ CALL  TURB_VER_DYN_FLUX(KKA,KKU,KKL,                                &
 !*       8.   SOURCES OF PASSIVE SCALAR VARIABLES
 !             -----------------------------------
 !
-IF (LHARAT) ZLM=PLENGTHH
-!
 IF (SIZE(PSVM,4)>0)                                                 &
 CALL  TURB_VER_SV_FLUX(KKA,KKU,KKL,                                 &
                       OTURB_FLX,HTURBDIM,                           &
@@ -687,7 +665,7 @@ CALL  TURB_VER_SV_FLUX(KKA,KKU,KKL,                                 &
                       PRHODJ,PWM,                                   &
                       PSFSVM,PSFSVP,                                &
                       PSVM,                                         &
-                      PTKEM,ZLM,MFMOIST,ZPSI_SV,                    &
+                      PTKEM,PLM,ZPSI_SV,                            &
                       PRSVS,PWSV                                    )
 !
 !
@@ -697,7 +675,7 @@ CALL  TURB_VER_SV_CORR(KKA,KKU,KKL,KRR,KRRL,KRRI,                   &
                       PTHLM,PRM,PTHVREF,                            &
                       PLOCPEXNM,PATHETA,PAMOIST,PSRCM,ZPHI3,ZPSI3,  &
                       PWM,PSVM,                                     &
-                      PTKEM,ZLM,PLEPS,ZPSI_SV                       )
+                      PTKEM,PLM,PLEPS,ZPSI_SV                       )
 !
 !
 !----------------------------------------------------------------------------
@@ -714,7 +692,7 @@ IF (SIZE(PSBL_DEPTH)>0) CALL SBL_DEPTH(IKB,IKE,PZZ,ZWU,ZWV,ZWTHV,PLMO,PSBL_DEPTH
 !             ------
 !
 !
-IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. .NOT. LHARAT) THEN
+IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
 !
 ! stores the Turbulent Prandtl number
 ! 
@@ -765,5 +743,4 @@ END IF
 !
 !
 !----------------------------------------------------------------------------
-IF (LHOOK) CALL DR_HOOK('TURB_VER',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER                                                                                               
diff --git a/src/mesonh/turb/turb_ver_dyn_flux.f90 b/src/mesonh/turb/turb_ver_dyn_flux.f90
index 9c7e8a33e..51bc4e7e1 100644
--- a/src/mesonh/turb/turb_ver_dyn_flux.f90
+++ b/src/mesonh/turb/turb_ver_dyn_flux.f90
@@ -19,7 +19,7 @@ INTERFACE
                       PRHODJ,                                       &
                       PCDUEFF,PTAU11M,PTAU12M,PTAU33M,              &
                       PTHLM,PRM,PSVM,PUM,PVM,PWM,PUSLOPEM,PVSLOPEM, &
-                      PTKEM,PLM,MFMOIST,PWU,PWV,                    &
+                      PTKEM,PLM,PWU,PWV,                            &
                       PRUS,PRVS,PRWS,                               &
                       PDP,PTP                                       )
 !
@@ -277,7 +277,6 @@ END MODULE MODI_TURB_VER_DYN_FLUX
 !!                     October 2009 (G. Tanguy) add ILENCH=LEN(YCOMMENT) after
 !!                                              change of YCOMMENT
 !!      2012-02 Y. Seity,  add possibility to run with reversed vertical levels
-!!      Modifications  July 2015 (Wim de Rooy) LHARATU switch
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!      Q. Rodier      17/01/2019 : cleaning : remove cyclic conditions on DP and ZA
@@ -287,14 +286,11 @@ END MODULE MODI_TURB_VER_DYN_FLUX
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CONF
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_DYN_n,          ONLY: LOCEAN
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
+use modd_field,          only: tfielddata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_NSV
@@ -309,8 +305,7 @@ USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
 USE MODI_SECOND_MNH
-USE MODI_SHUMAN , ONLY: MZM, MZF, MXM, MXF, MYM, MYF,&
-                      & DZM, DXF, DXM, DYF, DYM
+USE MODI_SHUMAN
 USE MODI_TRIDIAG 
 USE MODI_TRIDIAG_WIND 
 USE MODI_LES_MEAN_SUBGRID
@@ -347,8 +342,6 @@ REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSINSLOPE    ! sinus of the angle
                                       ! between i and the slope vector
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST      ! moist mass flux dual scheme
-
 !
 REAL, DIMENSION(:,:),   INTENT(IN)   ::  PCDUEFF     ! Cd * || u || at time t
 REAL, DIMENSION(:,:),   INTENT(IN)   ::  PTAU11M      ! <uu> in the axes linked 
@@ -546,7 +539,7 @@ IF (LOCEAN) THEN !ocean model at phys sfc (ocean domain top)
   ZFLXZ(:,:,KKU) = ZFLXZ(:,:,IKE) 
 END IF
 !
-IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
   ! stores the U wind component vertical flux
   TZFIELD%CMNHNAME   = 'UW_VFLX'
   TZFIELD%CSTDNAME   = ''
@@ -646,7 +639,7 @@ IF (LOCEAN) THEN
             +(PWM(:,:,IKE-KKL:IKE-KKL)-PWM(:,:,IKE:IKE  ))                   &
               /(PDZZ(:,:,IKE-KKL:IKE-KKL)+PDZZ(:,:,IKE:IKE  ))               &
           )                                                                  &
-         * PDZX(:,:,IKE-KKL:IKE-KKL)                                         &
+         * PDZX(:,:,IKE-KKL:IKE-KKL)                                          &
      ) / (0.5*(PDXX(:,:,IKE-KKL:IKE-KKL)+PDXX(:,:,IKE:IKE)))                 &
                           )
 END IF
@@ -774,7 +767,7 @@ IF (LOCEAN) THEN
   ZFLXZ(:,:,KKU) = ZFLXZ(:,:,IKE) 
 END IF
 !
-IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
   ! stores the V wind component vertical flux
   TZFIELD%CMNHNAME   = 'VW_VFLX'
   TZFIELD%CSTDNAME   = ''
@@ -907,7 +900,7 @@ END IF
 !*       7.   DIAGNOSTIC COMPUTATION OF THE 1D <W W> VARIANCE
 !             -----------------------------------------------
 !
-IF ( OTURB_FLX .AND. TPFILE%LOPENED .AND. HTURBDIM == '1DIM') THEN
+IF ( OTURB_FLX .AND. tpfile%lopened .AND. HTURBDIM == '1DIM') THEN
   ZFLXZ(:,:,:)= (2./3.) * PTKEM(:,:,:)                     &
      -XCMFS*PLM(:,:,:)*SQRT(PTKEM(:,:,:))*GZ_W_M(PWM,PDZZ)
   ! to be tested &
@@ -928,5 +921,4 @@ END IF
 !
 !----------------------------------------------------------------------------
 !
-IF (LHOOK) CALL DR_HOOK('TURB_VER_DYN_FLUX',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_DYN_FLUX
diff --git a/src/mesonh/turb/turb_ver_sv_corr.f90 b/src/mesonh/turb/turb_ver_sv_corr.f90
index 6676e227c..b62268e7e 100644
--- a/src/mesonh/turb/turb_ver_sv_corr.f90
+++ b/src/mesonh/turb/turb_ver_sv_corr.f90
@@ -97,9 +97,6 @@ END MODULE MODI_TURB_VER_SV_CORR
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CST
 USE MODD_CTURB
 USE MODD_PARAMETERS
@@ -113,7 +110,7 @@ USE MODI_GRADIENT_U
 USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
-USE MODI_SHUMAN , ONLY : MZF
+USE MODI_SHUMAN 
 USE MODI_EMOIST
 USE MODI_ETHETA
 USE MODI_LES_MEAN_SUBGRID
@@ -171,8 +168,6 @@ REAL :: ZCTSVD = 2.4  ! constant for temperature - scalar covariance dissipation
 REAL :: ZCQSVD = 2.4  ! constant for humidity - scalar covariance dissipation
 !----------------------------------------------------------------------------
 !
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-IF (LHOOK) CALL DR_HOOK('TURB_VER_SV_CORR',0,ZHOOK_HANDLE)
 CALL SECOND_MNH(ZTIME1)
 !
 IF(LBLOWSNOW) THEN
@@ -225,5 +220,4 @@ CALL SECOND_MNH(ZTIME2)
 XTIME_LES = XTIME_LES + ZTIME2 - ZTIME1
 !----------------------------------------------------------------------------
 !
-IF (LHOOK) CALL DR_HOOK('TURB_VER_SV_CORR',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_SV_CORR
diff --git a/src/mesonh/turb/turb_ver_sv_flux.f90 b/src/mesonh/turb/turb_ver_sv_flux.f90
index 678a02e4a..23d8bee03 100644
--- a/src/mesonh/turb/turb_ver_sv_flux.f90
+++ b/src/mesonh/turb/turb_ver_sv_flux.f90
@@ -18,7 +18,7 @@ INTERFACE
                       PRHODJ,PWM,                                   &
                       PSFSVM,PSFSVP,                                &
                       PSVM,                                         &
-                      PTKEM,PLM,MFMOIST,PPSI_SV,                    &
+                      PTKEM,PLM,PPSI_SV,                            &
                       PRSVS,PWSV                                    )
 !
 USE MODD_IO, ONLY: TFILEDATA
@@ -259,7 +259,6 @@ END MODULE MODI_TURB_VER_SV_FLUX
 !!                                              change of YCOMMENT
 !!                     Feb 2012(Y. Seity) add possibility to run with reversed 
 !!                                              vertical levels
-!!      Modifications: July 2015 (Wim de Rooy) LHARAT switch
 !!                     Feb 2017(M. Leriche) add initialisation of ZSOURCE
 !!                                   to avoid unknwon values outside physical domain
 !!                                   and avoid negative values in sv tendencies
@@ -269,25 +268,22 @@ END MODULE MODI_TURB_VER_SV_FLUX
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CST
 USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
+use modd_field,          only: tfielddata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_LES
 USE MODD_CONF
 USE MODD_NSV,            ONLY: XSVMIN, NSV_LGBEG, NSV_LGEND
 USE MODD_BLOWSNOW
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
+USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 !
 USE MODI_GRADIENT_U
 USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
-USE MODI_SHUMAN , ONLY : DZM, MZM, MZF
+USE MODI_SHUMAN 
 USE MODI_TRIDIAG 
 USE MODI_TRIDIAG_WIND 
 USE MODI_EMOIST
@@ -318,8 +314,6 @@ REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
                                                       ! normal to the ground surface
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST       ! moist mf dual scheme
-
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSFSVM       ! t - deltat 
 !
@@ -371,9 +365,6 @@ TYPE(TFIELDDATA)  :: TZFIELD
 !*       1.   PRELIMINARIES
 !             -------------
 !
-
-REAL(KIND=JPRB) :: ZHOOK_HANDLE
-IF (LHOOK) CALL DR_HOOK('TURB_VER_SV_FLUX',0,ZHOOK_HANDLE)
 IKB=KKA+JPVEXT_TURB*KKL
 IKE=KKU-JPVEXT_TURB*KKL
 IKT=SIZE(PSVM,3)
@@ -430,8 +421,10 @@ DO JSV=1,ISV
 !  Compute the equivalent tendency for the JSV scalar variable
   PRSVS(:,:,:,JSV)= PRSVS(:,:,:,JSV)+    &
                     PRHODJ(:,:,:)*(ZRES(:,:,:)-PSVM(:,:,:,JSV))/PTSTEP
+! PRSVS(:,:,:,JSV)= MAX((PRSVS(:,:,:,JSV)+    &
+!                   PRHODJ(:,:,:)*(ZRES(:,:,:)-PSVM(:,:,:,JSV))/PTSTEP),XSVMIN(JSV))
 !
-  IF ( (OTURB_FLX .AND. TPFILE%LOPENED) .OR. LLES_CALL ) THEN
+  IF ( (OTURB_FLX .AND. tpfile%lopened) .OR. LLES_CALL ) THEN
     ! Diagnostic of the cartesian vertical flux
     !
     ZFLXZ(:,:,:) = -ZCSV * PPSI_SV(:,:,:,JSV) * MZM(PLM*SQRT(PTKEM)) / PDZZ * &
@@ -458,7 +451,7 @@ DO JSV=1,ISV
     PWSV(:,:,IKE,JSV)=PWSV(:,:,IKE-KKL,JSV)
  END IF
   !
-  IF (OTURB_FLX .AND. TPFILE%LOPENED) THEN
+  IF (OTURB_FLX .AND. tpfile%lopened) THEN
     ! stores the JSVth vertical flux
     WRITE(TZFIELD%CMNHNAME,'("WSV_FLX_",I3.3)') JSV
     TZFIELD%CSTDNAME   = ''
@@ -494,5 +487,4 @@ END DO   ! end of scalar loop
 !
 !----------------------------------------------------------------------------
 !
-IF (LHOOK) CALL DR_HOOK('TURB_VER_SV_FLUX',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_SV_FLUX
diff --git a/src/mesonh/turb/turb_ver_thermo_corr.f90 b/src/mesonh/turb/turb_ver_thermo_corr.f90
index 6edf5c724..bdd074e5c 100644
--- a/src/mesonh/turb/turb_ver_thermo_corr.f90
+++ b/src/mesonh/turb/turb_ver_thermo_corr.f90
@@ -23,7 +23,106 @@ INTERFACE
                       PRED2R3, PRED2THR3, PBLL_O_E, PETHETA,        &
                       PEMOIST, PREDTH1, PREDR1, PPHI3, PPSI3, PD,   &
                       PFWTH,PFWR,PFTH2,PFR2,PFTHR,                  &
-                      PTHLP,PRP,MFMOIST,PSIGS                       )
+                      PTHLP,PRP,PSIGS                          )
+!
+USE MODD_IO, ONLY: TFILEDATA
+!
+INTEGER,                INTENT(IN)   :: KKA           !near ground array index  
+INTEGER,                INTENT(IN)   :: KKU           !uppest atmosphere array index
+INTEGER,                INTENT(IN)   :: KKL           !vert. levels type 1=MNH -1=AR 
+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)   ::  OTURB_FLX    ! switch to write the
+                                 ! turbulent fluxes in the syncronous FM-file
+CHARACTER(len=4),       INTENT(IN)   ::  HTURBDIM     ! dimensionality of the
+                                                      ! turbulence scheme
+CHARACTER(len=4),       INTENT(IN)   ::  HTOM         ! type of Third Order Moment
+REAL,                   INTENT(IN)   ::  PIMPL, PEXPL ! Coef. for temporal disc.
+TYPE(TFILEDATA),        INTENT(IN)   ::  TPFILE       ! Output file
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDZZ, PDXX, PDYY, PDZX, PDZY
+                                                      ! Metric coefficients
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
+                                                      ! normal to the ground surface
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! ref. state Virtual 
+                                                      ! Potential Temperature 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSFTHM,PSFRM ! surface fluxes at time
+!                                                     ! t - deltat 
+!
+REAL, DIMENSION(:,:),   INTENT(IN)   ::  PSFTHP,PSFRP ! surface fluxes at time
+!                                                     ! t + deltat 
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PWM 
+! Vertical wind
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHLM 
+! potential temperature at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM          ! Mixing ratios 
+                                                      ! at t-Delta t
+REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM         ! Mixing ratios 
+!
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS        ! dissipative length   
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PATHETA      ! coefficients between 
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PAMOIST      ! s and Thetal and Rnp
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSRCM        ! normalized 
+                  ! 2nd-order flux s'r'c/2Sigma_s2 at t-1 multiplied by Lambda_3
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PBETA        ! buoyancy coefficient
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PSQRT_TKE    ! sqrt(e)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDTH_DZ      ! d(th)/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PDR_DZ       ! d(rt)/dz
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2TH3     ! 3D Redeslperger number R*2_th
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2R3      ! 3D Redeslperger number R*2_r
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRED2THR3    ! 3D Redeslperger number R*2_thr
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PBLL_O_E     ! beta * Lk * Leps / tke
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PETHETA      ! Coefficient for theta in theta_v computation
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PEMOIST      ! Coefficient for r in theta_v computation
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PREDTH1      ! 1D Redelsperger number for Th
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PREDR1       ! 1D Redelsperger number for r
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PPHI3        ! Prandtl number for temperature
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PPSI3        ! Prandtl number for vapor
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PD           ! Denominator in Prandtl numbers
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFWTH        ! d(w'2th' )/dz (at flux point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFWR         ! d(w'2r'  )/dz (at flux point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFTH2        ! d(w'th'2 )/dz (at mass point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFR2         ! d(w'r'2  )/dz (at mass point)
+REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PFTHR        ! d(w'th'r')/dz (at mass point)
+!
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHLP      ! guess of thl at t+ deltat
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRP        ! guess of r at t+ deltat
+!
+REAL, DIMENSION(:,:,:),   INTENT(OUT)  ::  PSIGS     ! Vert. part of Sigma_s at t
+!
+!
+!
+END SUBROUTINE TURB_VER_THERMO_CORR
+!
+END INTERFACE
+!
+END MODULE MODI_TURB_VER_THERMO_CORR
+!
+!
+!     ###############################################################
+      SUBROUTINE TURB_VER_THERMO_CORR(KKA,KKU,KKL,KRR, KRRL, KRRI,  &
+                      OTURB_FLX,HTURBDIM,HTOM,                      &
+                      PIMPL,PEXPL,                                  &
+                      TPFILE,                                       &
+                      PDXX,PDYY,PDZZ,PDZX,PDZY,PDIRCOSZW,           &
+                      PRHODJ,PTHVREF,                               &
+                      PSFTHM,PSFRM,PSFTHP,PSFRP,                    &
+                      PWM,PTHLM,PRM,PSVM,                           &
+                      PTKEM,PLM,PLEPS,                              &
+                      PLOCPEXNM,PATHETA,PAMOIST,PSRCM,              &
+                      PBETA, PSQRT_TKE, PDTH_DZ, PDR_DZ, PRED2TH3,  &
+                      PRED2R3, PRED2THR3, PBLL_O_E, PETHETA,        &
+                      PEMOIST, PREDTH1, PREDR1, PPHI3, PPSI3, PD,   &
+                      PFWTH,PFWR,PFTH2,PFR2,PFTHR,                  &
+                      PTHLP,PRP,PSIGS                          )
 !     ###############################################################
 !
 !
@@ -205,18 +304,15 @@ INTERFACE
 !!                                              change of YCOMMENT
 !!                     2012-02 (Y. Seity) add possibility to run with reversed 
 !!                                              vertical levels
-!!      Modifications  July 2015 (Wim de Rooy) LHARAT switch
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!--------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
 USE MODD_CST
 USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
+use modd_field,          only: tfielddata, TYPEREAL
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_PARAMETERS
 USE MODD_CONF
@@ -226,7 +322,7 @@ USE MODI_GRADIENT_U
 USE MODI_GRADIENT_V
 USE MODI_GRADIENT_W
 USE MODI_GRADIENT_M
-USE MODI_SHUMAN , ONLY : DZM, MZM, MZF
+USE MODI_SHUMAN 
 USE MODI_TRIDIAG 
 USE MODI_LES_MEAN_SUBGRID
 USE MODI_PRANDTL
@@ -263,8 +359,6 @@ REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
                                                       ! normal to the ground surface
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST      ! moist mass flux dual scheme
-
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! ref. state Virtual 
                                                       ! Potential Temperature 
 !
@@ -283,7 +377,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM          ! Mixing ratios
 REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM         ! Mixing ratios 
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
-! In case LHARATU=TRUE, PLM already includes all stability corrections
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS        ! dissipative length   
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
@@ -474,7 +567,7 @@ END IF
   !
   !
   ! stores <THl THl>  
-  IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+  IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
     TZFIELD%CMNHNAME   = 'THL_VVAR'
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CLONGNAME  = 'THL_VVAR'
@@ -601,7 +694,7 @@ END IF
                      2. * PATHETA(:,:,:) * PAMOIST(:,:,:) * ZFLXZ(:,:,:)
     END IF
     ! stores <THl Rnp>   
-    IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+    IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
       TZFIELD%CMNHNAME   = 'THLRCONS_VCOR'
       TZFIELD%CSTDNAME   = ''
       TZFIELD%CLONGNAME  = 'THLRCONS_VCOR'
@@ -708,7 +801,7 @@ END IF
       PSIGS(:,:,:) = PSIGS(:,:,:) + PAMOIST(:,:,:) **2 * ZFLXZ(:,:,:)
     END IF
     ! stores <Rnp Rnp>    
-    IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+    IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
       TZFIELD%CMNHNAME   = 'RTOT_VVAR'
       TZFIELD%CSTDNAME   = ''
       TZFIELD%CLONGNAME  = 'RTOT_VVAR'
@@ -752,5 +845,4 @@ END IF
 !
   DEALLOCATE(ZCOEFF)
 !----------------------------------------------------------------------------
-IF (LHOOK) CALL DR_HOOK('TURB_VER_THERMO_CORR',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_THERMO_CORR
diff --git a/src/mesonh/turb/turb_ver_thermo_flux.f90 b/src/mesonh/turb/turb_ver_thermo_flux.f90
index 4dffd53fb..cf539984e 100644
--- a/src/mesonh/turb/turb_ver_thermo_flux.f90
+++ b/src/mesonh/turb/turb_ver_thermo_flux.f90
@@ -23,7 +23,7 @@ INTERFACE
                       PBETA, PSQRT_TKE, PDTH_DZ, PDR_DZ, PRED2TH3,  &
                       PRED2R3, PRED2THR3, PBLL_O_E, PETHETA,        &
                       PEMOIST, PREDTH1, PREDR1, PPHI3, PPSI3, PD,   &
-                      PFWTH,PFWR,PFTH2,PFR2,PFTHR,MFMOIST,PBL_DEPTH,&
+                      PFWTH,PFWR,PFTH2,PFR2,PFTHR,PBL_DEPTH,        &
                       PWTHV,PRTHLS,PRRS,PTHLP,PRP,PTP,PWTH,PWRC     )
 !
 USE MODD_IO, ONLY: TFILEDATA
@@ -322,7 +322,6 @@ END MODULE MODI_TURB_VER_THERMO_FLUX
 !!                                              change of YCOMMENT
 !!                     2012-02 (Y. Seity) add possibility to run with reversed
 !!                                             vertical levels
-!!      Modifications  July 2015 (Wim de Rooy) LHARAT switch
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !!                     2021 (D. Ricard) last version of HGRAD turbulence scheme
 !!                                 Leronard terms instead of Reynolds terms
@@ -337,12 +336,9 @@ END MODULE MODI_TURB_VER_THERMO_FLUX
 !*      0. DECLARATIONS
 !          ------------
 !
-USE PARKIND1, ONLY : JPRB
-USE YOMHOOK , ONLY : LHOOK, DR_HOOK
-!
 USE MODD_CST
 USE MODD_CTURB
-USE MODD_FIELD,          ONLY: TFIELDDATA, TYPEREAL
+use modd_field,          only: tfielddata, TYPEREAL
 USE MODD_GRID_n,         ONLY: XZS, XXHAT, XYHAT
 USE MODD_IO,             ONLY: TFILEDATA
 USE MODD_METRICS_n,      ONLY: XDXX, XDYY, XDZX, XDZY, XDZZ
@@ -371,7 +367,7 @@ USE MODI_PRANDTL
 USE MODI_TRIDIAG_THERMO
 USE MODI_TM06_H
 !
-USE MODE_IO_FIELD_WRITE, ONLY: IO_FIELD_WRITE
+USE MODE_IO_FIELD_WRITE, only: IO_Field_write
 USE MODE_PRANDTL
 !
 USE MODI_SECOND_MNH
@@ -406,7 +402,6 @@ REAL, DIMENSION(:,:),   INTENT(IN)   ::  PDIRCOSZW    ! Director Cosinus of the
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PZZ          ! altitudes
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PRHODJ       ! dry density * grid volum
-REAL, DIMENSION(:,:,:), INTENT(IN)   ::  MFMOIST      ! moist mass flux dual scheme
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTHVREF      ! ref. state Virtual 
                                                       ! Potential Temperature 
 !
@@ -425,8 +420,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PRM          ! Mixing ratios
 REAL, DIMENSION(:,:,:,:), INTENT(IN) ::  PSVM         ! Mixing ratios 
 !
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PTKEM        ! TKE at time t
-!
-! In case LHARAT=TRUE, PLM already includes all stability corrections
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLM          ! Turb. mixing length   
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLEPS        ! dissipative length   
 REAL, DIMENSION(:,:,:), INTENT(IN)   ::  PLOCPEXNM    ! Lv(T)/Cp/Exnref at time t-1
@@ -482,7 +475,7 @@ REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2),SIZE(PTHLM,3))  ::  &
        ZDFDDTDZ, & ! dF/d(dTh/dz)
        ZDFDDRDZ, & ! dF/d(dr/dz)
        Z3RDMOMENT,&  ! 3 order term in flux or variance equation
-       ZF_LEONARD,&  ! Leonard terms
+       ZF_NEW,    &
        ZRWTHL,    &
        ZRWRNP,    &
        ZCLD_THOLD
@@ -495,6 +488,7 @@ INTEGER             :: IKT          ! array size in k direction
 INTEGER             :: IKTB,IKTE    ! start, end of k loops in physical domain 
 INTEGER             :: JI, JJ ! loop indexes 
 !
+!
 INTEGER                    :: IIB,IJB       ! Lower bounds of the physical
                                             ! sub-domain in x and y directions
 INTEGER                    :: IIE,IJE       ! Upper bounds of the physical
@@ -506,14 +500,17 @@ REAL, DIMENSION(:), ALLOCATABLE   :: ZYHAT_ll    !   Position y in the conformal
                                                  ! plane (array on the complete domain)
 !
 !
+CHARACTER (LEN=100) :: YCOMMENT     ! comment string in LFIFM file
+CHARACTER (LEN=LEN_HREC)  :: YRECFM       ! Name of the desired field in LFIFM file
+!
 REAL :: ZTIME1, ZTIME2
 REAL :: ZDELTAX
-REAL :: ZXBEG,ZXEND,ZYBEG,ZYEND ! Forcing size for ocean deep convection
+REAL    :: ZXBEG,ZXEND,ZYBEG,ZYEND ! Forcing size for ocean deep convection
 REAL, DIMENSION(SIZE(XXHAT),SIZE(XYHAT)) :: ZDIST ! distance
                                    ! from the center of the cooling               
 REAL :: ZFLPROV
 INTEGER           :: JKM          ! vertical index loop
-INTEGER           :: JSW
+INTEGER          :: JSW
 REAL :: ZSWA     ! index for time flux interpolation
 !
 INTEGER :: IIU, IJU
@@ -574,7 +571,7 @@ GUSERV = (KRR/=0)
 !
 ZKEFF(:,:,:) = MZM( PLM(:,:,:) * SQRT(PTKEM(:,:,:)) )
 !
-! Define a cloud mask with ri and rc (used after with a threshold) for Leonard terms
+! define a cloud mask with ri and rc (used after with a threshold) for Leonard terms
 !
 IF(LHGRAD) THEN
   IF ( KRRL >= 1 ) THEN
@@ -617,7 +614,7 @@ ZDFDDTDZ(:,:,:) = -XCSHF*ZKEFF*D_PHI3DTDZ_O_DDTDZ(PPHI3,PREDTH1,PREDR1,PRED2TH3,
 IF (LHGRAD) THEN
  ! Compute the Leonard terms for thl
  ZDELTAX= XXHAT(3) - XXHAT(2)
- ZF_LEONARD (:,:,:)= XCOEFHGRADTHL*ZDELTAX*ZDELTAX/12.0*(      &
+ ZF_NEW (:,:,:)= XCOEFHGRADTHL*ZDELTAX*ZDELTAX/12.0*(      &
                  MXF(GX_W_UW(PWM(:,:,:), XDXX, XDZZ, XDZX))&
                 *MZM(GX_M_M(PTHLM(:,:,:),XDXX,XDZZ,XDZX))  &
               +  MYF(GY_W_VW(PWM(:,:,:), XDYY,XDZZ,XDZY))  &
@@ -715,7 +712,7 @@ IF (LHGRAD) THEN
   ZALT(:,:,JK) = PZZ(:,:,JK)-XZS(:,:)
  END DO
  WHERE ( (ZCLD_THOLD(:,:,:) >= XCLDTHOLD) .AND. ( ZALT(:,:,:) >= XALTHGRAD) )
-  ZRWTHL(:,:,:) = -GZ_W_M(MZM(PRHODJ(:,:,:))*ZF_LEONARD(:,:,:),XDZZ)
+  ZRWTHL(:,:,:) = -GZ_W_M(MZM(PRHODJ(:,:,:))*ZF_NEW(:,:,:),XDZZ)
  END WHERE
 END IF
 !
@@ -730,7 +727,7 @@ ZFLXZ(:,:,:)   = ZF                                                &
 ! replace the flux by the Leonard terms
 IF (LHGRAD) THEN
  WHERE ( (ZCLD_THOLD(:,:,:) >= XCLDTHOLD) .AND. ( ZALT(:,:,:) >= XALTHGRAD) )
-  ZFLXZ(:,:,:) = ZF_LEONARD(:,:,:)
+  ZFLXZ(:,:,:) = ZF_NEW(:,:,:)
  END WHERE
 END IF
 !
@@ -754,7 +751,7 @@ ELSE
   PWTH(:,:,KKA)=0.5*(ZFLXZ(:,:,KKA)+ZFLXZ(:,:,KKA+KKL))
 END IF
 !
-IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
   ! stores the conservative potential temperature vertical flux
   TZFIELD%CMNHNAME   = 'THW_FLX'
   TZFIELD%CSTDNAME   = ''
@@ -857,7 +854,7 @@ IF (KRR /= 0) THEN
   ! Compute Leonard Terms for Cloud mixing ratio
   IF (LHGRAD) THEN
     ZDELTAX= XXHAT(3) - XXHAT(2)
-    ZF_LEONARD (:,:,:)= XCOEFHGRADRM*ZDELTAX*ZDELTAX/12.0*(        &
+    ZF_NEW (:,:,:)= XCOEFHGRADRM*ZDELTAX*ZDELTAX/12.0*(        &
                 MXF(GX_W_UW(PWM(:,:,:), XDXX, XDZZ, XDZX))       &
                 *MZM(GX_M_M(PRM(:,:,:,1),XDXX,XDZZ,XDZX)) &
                 +MYF(GY_W_VW(PWM(:,:,:), XDYY,XDZZ,XDZY))        &
@@ -990,7 +987,7 @@ IF (KRR /= 0) THEN
   PWRC(:,:,IKE)=PWRC(:,:,IKE-KKL)
   !
   !
-  IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+  IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
     ! stores the conservative mixing ratio vertical flux
     TZFIELD%CMNHNAME   = 'RCONSW_FLX'
     TZFIELD%CSTDNAME   = ''
@@ -1066,7 +1063,7 @@ END IF
 !
 !*       4.1  <w Rc>    
 !
-IF ( ((OTURB_FLX .AND. TPFILE%LOPENED) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
+IF ( ((OTURB_FLX .AND. tpfile%lopened) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
   !  
   ! recover the Conservative potential temperature flux : 
   ZA(:,:,:)   = DZM(PIMPL * PTHLP + PEXPL * PTHLM) / PDZZ *       &
@@ -1080,7 +1077,7 @@ IF ( ((OTURB_FLX .AND. TPFILE%LOPENED) .OR. LLES_CALL) .AND. (KRRL > 0) ) THEN
   ZFLXZ(:,:,KKA) = ZFLXZ(:,:,IKB) 
   !                 
   ! store the liquid water mixing ratio vertical flux
-  IF ( OTURB_FLX .AND. TPFILE%LOPENED ) THEN
+  IF ( OTURB_FLX .AND. tpfile%lopened ) THEN
     TZFIELD%CMNHNAME   = 'RCW_FLX'
     TZFIELD%CSTDNAME   = ''
     TZFIELD%CLONGNAME  = 'RCW_FLX'
@@ -1109,5 +1106,4 @@ IF (LOCEAN.AND.LDEEPOC) THEN
 END IF
 !
 !----------------------------------------------------------------------------
-IF (LHOOK) CALL DR_HOOK('TURB_VER_THERMO_FLUX',1,ZHOOK_HANDLE)
 END SUBROUTINE TURB_VER_THERMO_FLUX
-- 
GitLab