From 3dddb3d12281a7358b32003b30a97a0d2ce48bb6 Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Fri, 5 Nov 2021 17:27:22 +0100 Subject: [PATCH] Quentin 05/11/2021: Merge MNH->AROME bugfix rmc01 --- src/common/turb/rmc01.f90 | 55 +++++++++++---------------------------- 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/src/common/turb/rmc01.f90 b/src/common/turb/rmc01.f90 index cf77c5033..575b98c39 100644 --- a/src/common/turb/rmc01.f90 +++ b/src/common/turb/rmc01.f90 @@ -1,40 +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 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 -! -! ############################################################## - SUBROUTINE RMC01(HTURBLEN,KKA, KKU, KKL, PZZ, PDXX, PDYY, PDZZ, PDIRCOSZW, & - PSBL_DEPTH, PLMO, PLK, PLEPS ) +! ######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 ! ############################################################## ! !!**** *RMC01* - -!! +!! !! PURPOSE !! ------- !! This routine modifies the mixing and dissipative length near the SBL. @@ -57,7 +29,7 @@ END MODULE MODI_RMC01 !! !! AUTHOR !! ------ -!! +!! !! V. Masson - Meteo-France - !! !! MODIFICATIONS @@ -82,14 +54,14 @@ IMPLICIT NONE ! ------------------------ ! CHARACTER(LEN=4), INTENT(IN) :: HTURBLEN ! type of mixing length -INTEGER, INTENT(IN) :: KKA !near ground array index +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) :: 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 @@ -100,7 +72,7 @@ REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLEPS ! Dissipative length ! INTEGER :: IKB,IKE ! first,last physical level INTEGER :: IKT ! array size in k direction -INTEGER :: IKTB,IKTE ! start, end of k loops in physical domain +INTEGER :: IKTB,IKTE ! start, end of k loops in physical domain INTEGER :: IIU ! horizontal x boundary INTEGER :: IJU ! horizontal y boundary INTEGER :: JK ! loop counter @@ -127,6 +99,8 @@ REAL, DIMENSION(SIZE(PZZ,1),SIZE(PZZ,2),SIZE(PZZ,3)) :: ZZC ! alt. where ! --------------- ! ! horizontal boundaries +REAL(KIND=JPRB) :: ZHOOK_HANDLE +IF (LHOOK) CALL DR_HOOK('RMC01',0,ZHOOK_HANDLE) IIU=SIZE(PZZ,1) IJU=SIZE(PZZ,2) ! @@ -139,7 +113,7 @@ IKT=SIZE(PZZ,3) IKTE=IKT-JPVEXT_TURB ! ! altitude of mass points -ZZZ=MZF(PZZ) +ZZZ=MZF(KKA,KKU,KKL,PZZ) ! replace by height of mass points DO JK=1,IKT ZZZ(:,:,JK) = ZZZ(:,:,JK) - PZZ(:,:,IKB) @@ -157,7 +131,7 @@ DO JK=1,IKT WHERE (PLMO(:,:)==XUNDEF) ZZ_O_LMO(:,:,JK)=0. ELSEWHERE - ZZ_O_LMO(:,:,JK)=ZZZ(:,:,JK)*PDIRCOSZW(:,:)/PLMO(:,:) + ZZ_O_LMO(:,:,JK)=ZZZ(:,:,JK)*PDIRCOSZW(:,:)/PLMO(:,:) END WHERE END DO ZZ_O_LMO(:,:,:) = MAX(ZZ_O_LMO(:,:,:),-10.) @@ -257,4 +231,5 @@ PLEPS(:,:,KKA) = PLEPS(:,:,IKB) PLEPS(:,:,KKU ) = PLEPS(:,:,IKE) !------------------------------------------------------------------------------- ! +IF (LHOOK) CALL DR_HOOK('RMC01',1,ZHOOK_HANDLE) END SUBROUTINE RMC01 -- GitLab