From d43de6542f977f49ba07cb37141fd652faf6ffa8 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Thu, 27 Jan 2022 17:54:22 +0100
Subject: [PATCH]  Quentin 27/01/2022: merge (end) turb.F90 : add IBM
 (MNH->COMMON)

---
 docs/TODO                          |  3 +++
 src/arome/aux/ibm_mixinglength.f90 | 35 ++++++++++++++++++++++++++++++
 src/arome/aux/modd_ibm_paramn.f90  | 15 +++++++++++++
 src/common/turb/turb.F90           | 10 +++++++++
 4 files changed, 63 insertions(+)
 create mode 100644 src/arome/aux/ibm_mixinglength.f90
 create mode 100644 src/arome/aux/modd_ibm_paramn.f90

diff --git a/docs/TODO b/docs/TODO
index a6a30bb9b..220fa534a 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -45,3 +45,6 @@ Ce répertoire devra être vidé à la fin du phasage, les modifications nécess
 Budgets/DDH
 - Le code dans budget_DDH devra être transféré dans mode_budget
 - les routines arome specifiques aux budgets sont dans mpa/micro, il faudrait les mettre ailleurs
+
+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 ?
diff --git a/src/arome/aux/ibm_mixinglength.f90 b/src/arome/aux/ibm_mixinglength.f90
new file mode 100644
index 000000000..766627888
--- /dev/null
+++ b/src/arome/aux/ibm_mixinglength.f90
@@ -0,0 +1,35 @@
+!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_ibm_paramn.f90 b/src/arome/aux/modd_ibm_paramn.f90
new file mode 100644
index 000000000..716a93e6d
--- /dev/null
+++ b/src/arome/aux/modd_ibm_paramn.f90
@@ -0,0 +1,15 @@
+!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/common/turb/turb.F90 b/src/common/turb/turb.F90
index 4bca37c65..f86eaf87a 100644
--- a/src/common/turb/turb.F90
+++ b/src/common/turb/turb.F90
@@ -272,6 +272,9 @@ USE MODE_SOURCES_NEG_CORRECT, ONLY: SOURCES_NEG_CORRECT
 USE MODE_EMOIST, ONLY: EMOIST
 USE MODE_ETHETA, ONLY: ETHETA
 !
+USE MODD_IBM_PARAM_n,    ONLY: LIBM, XIBM_LS, XIBM_XMUT
+USE MODI_IBM_MIXINGLENGTH
+!
 IMPLICIT NONE
 !
 !
@@ -733,6 +736,13 @@ IF (HTURBLEN=='ADAP') ZLEPS = MIN(ZLEPS,ZLMW*XCADAP)
 IF (HTURBDIM=="3DIM") THEN
   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
-- 
GitLab