From f70868150a6c52d3648e4d5f93cff8bdd0149c74 Mon Sep 17 00:00:00 2001
From: Gaelle DELAUTIER <gaelle.delautier@meteo.fr>
Date: Tue, 15 May 2018 14:13:07 +0200
Subject: [PATCH] Q Rodier 15/05/2018 : new mixing length
 CTURBLEN='RM17'MNH/bl89.f90

---
 src/MNH/lesn.f90 |  5 +++--
 src/MNH/turb.f90 | 28 ++++++++++++++++++++++------
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/src/MNH/lesn.f90 b/src/MNH/lesn.f90
index fe4a59070..eea67385b 100644
--- a/src/MNH/lesn.f90
+++ b/src/MNH/lesn.f90
@@ -1,7 +1,8 @@
-!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
+! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/lesn.f90,v $
 !-----------------------------------------------------------------
 !     #################
       SUBROUTINE  LES_n
@@ -3206,7 +3207,7 @@ ELSE IF (CBL_HEIGHT_DEF=='KE ') THEN
 !
   ZKE_TOT(:) = ZKE_TOT(:) + XLES_SUBGRID_TKE   (:,NLES_CURRENT_TCOUNT,1)
 !
-  IF (CTURBDIM/='BL89' .AND. LLES_RESOLVED) &
+  IF (CTURBLEN/='BL89' .AND. CTURBLEN/='RM17' .AND. LLES_RESOLVED) &
   ZKE_TOT(:) = ZKE_TOT(:) + XLES_RESOLVED_KE(:,NLES_CURRENT_TCOUNT,1)
 !
   ZINT_KE_TOT = 0.
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index da1295a64..5b4090e65 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -341,6 +341,7 @@ END MODULE MODI_TURB
 !!                     10/2012 J.Escobar Bypass PGI bug , redefine some allocatable array inplace of automatic
 !!                     04/2016  (C.Lac) correction of negativity for KHKO
 !!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!!                     01/2018 (Q.Rodier) Introduction of RM17
 !! --------------------------------------------------------------------------
 !       
 !*      0. DECLARATIONS
@@ -355,6 +356,9 @@ USE MODD_IO_ll, ONLY: TFILEDATA
 USE MODD_LES
 USE MODD_NSV
 !
+USE MODI_GRADIENT_M
+USE MODI_GRADIENT_U
+USE MODI_GRADIENT_V
 USE MODI_BL89
 USE MODI_TURB_VER
 USE MODI_ROTATE_WIND
@@ -540,6 +544,7 @@ REAL                :: ZALPHA       ! proportionnality constant between Dz/2 and
 !
 REAL :: ZTIME1, ZTIME2
 REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)):: ZTT,ZEXNE,ZLV,ZLS,ZCPH
+REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3))::  ZSHEAR, ZDUDZ, ZDVDZ
 TYPE(TFIELDDATA) :: TZFIELD
 !
 !------------------------------------------------------------------------------------------
@@ -740,21 +745,31 @@ SELECT CASE (HTURBLEN)
 !           ------------------
 
   CASE ('BL89')
-    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZLM)
+    ZSHEAR=0.
+    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM)
 !
-!*      3.2 Delta mixing length
+!*      3.2 RM17 mixing length
+!           ------------------
+
+  CASE ('RM17')
+    ZDUDZ = MXF(MZF(1,KKU,1,GZ_U_UW(1,KKU,1,PUT,PDZZ)))
+    ZDVDZ = MYF(MZF(1,KKU,1,GZ_V_VW(1,KKU,1,PVT,PDZZ)))
+    ZSHEAR = SQRT(ZDUDZ*ZDUDZ + ZDVDZ*ZDVDZ)
+    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM)
+!
+!*      3.3 Delta mixing length
 !           -------------------
 !
   CASE ('DELT')
     CALL DELT(ZLM)
 !
-!*      3.3 Deardorff mixing length
+!*      3.4 Deardorff mixing length
 !           -----------------------
 !
   CASE ('DEAR')
     CALL DEAR(ZLM)
 !
-!*      3.4 Blackadar mixing length
+!*      3.5 Blackadar mixing length
 !           -----------------------
 !
   CASE ('BLKR')
@@ -1635,8 +1650,9 @@ ELSE
 !
 !*         3.1 BL89 mixing length
 !           ------------------
-  CASE ('BL89')
-    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZLM_CLOUD)
+  CASE ('BL89','RM17')
+    ZSHEAR=0.
+    CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD)
 !
 !*         3.2 Delta mixing length
 !           -------------------
-- 
GitLab