From 4fdb112ade2a2981ec1baf8ff31404d3afc953ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Riette?= <sebastien.riette@meteo.fr> Date: Tue, 25 Jan 2022 10:22:50 +0100 Subject: [PATCH] =?UTF-8?q?S=C3=A9bastien=20Riette=2025/01/2022=20merge=20?= =?UTF-8?q?mf=5Fturb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + correction mf_turb_expl.F90 --- src/arome/gmkpack_ignored_files | 2 + src/arome/turb/modi_mf_turb.F90 | 77 ---- src/arome/turb/shallow_mf.F90 | 10 +- .../turb/mode_mf_turb.F90} | 42 ++- ...mf_turb_expl.F90 => mode_mf_turb_expl.F90} | 1 + src/mesonh/turb/mf_turb.f90 | 332 ------------------ src/mesonh/turb/shallow_mf.f90 | 4 +- 7 files changed, 33 insertions(+), 435 deletions(-) delete mode 100644 src/arome/turb/modi_mf_turb.F90 rename src/{arome/turb/mf_turb.F90 => common/turb/mode_mf_turb.F90} (91%) rename src/common/turb/{mf_turb_expl.F90 => mode_mf_turb_expl.F90} (99%) delete mode 100644 src/mesonh/turb/mf_turb.f90 diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files index f9d5a7ad2..1c1fae1e5 100644 --- a/src/arome/gmkpack_ignored_files +++ b/src/arome/gmkpack_ignored_files @@ -106,6 +106,8 @@ phyex/turb/compute_function_thermo_mf.F90 phyex/turb/modd_cmfshall.F90 phyex/turb/mf_turb_expl.F90 phyex/turb/modi_mf_turb_expl.F90 +phyex/turb/mf_turb.F90 +phyex/turb/modi_mf_turb.F90 phyex/turb/compute_mf_cloud.F90 phyex/turb/compute_mf_cloud_bigaus.F90 phyex/turb/compute_mf_cloud_direct.F90 diff --git a/src/arome/turb/modi_mf_turb.F90 b/src/arome/turb/modi_mf_turb.F90 deleted file mode 100644 index e3dbf894b..000000000 --- a/src/arome/turb/modi_mf_turb.F90 +++ /dev/null @@ -1,77 +0,0 @@ -! ######spl - MODULE MODI_MF_TURB -! ###################### -! -INTERFACE -! ################################################################# - SUBROUTINE MF_TURB(KKA,KKB,KKE,KKU,KKL,OMIXUV, & - ONOMIXLG,KSV_LGBEG,KSV_LGEND, & - PIMPL, PTSTEP, PTSTEP_MET, PTSTEP_SV, & - PDZZ, & - PRHODJ, & - PTHLM,PTHVM,PRTM,PUM,PVM,PSVM, & - PTHLDT,PRTDT,PUDT,PVDT,PSVDT, & - PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,PSV_UP, & - PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & - PFLXZSVMF ) - -! ################################################################# -! -! -!* 1.1 Declaration of Arguments -! -! -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 - -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum -LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer -INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer -INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer -REAL, INTENT(IN) :: PIMPL ! degree of implicitness -REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep -REAL, INTENT(IN) :: PTSTEP_MET! Timestep for meteorological variables -REAL, INTENT(IN) :: PTSTEP_SV! Timestep for tracer variables -! -REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ ! metric coefficients - -REAL, DIMENSION(:,:), INTENT(IN) :: PRHODJ ! dry density * Grid size - -! Conservative var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHLM ! conservative pot. temp. -REAL, DIMENSION(:,:), INTENT(IN) :: PRTM ! water var. where -! Virtual potential temperature at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHVM -! Momentum at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PUM -REAL, DIMENSION(:,:), INTENT(IN) :: PVM -! scalar variables at t-dt -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSVM -! -! Tendencies of conservative variables -REAL, DIMENSION(:,:), INTENT(OUT) :: PTHLDT - -REAL, DIMENSION(:,:), INTENT(OUT) :: PRTDT -! Tendencies of momentum -REAL, DIMENSION(:,:), INTENT(OUT) :: PUDT -REAL, DIMENSION(:,:), INTENT(OUT) :: PVDT -! Tendencies of scalar variables -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSVDT - - -! Updraft characteritics -REAL, DIMENSION(:,:), INTENT(IN) :: PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSV_UP -! Fluxes -REAL, DIMENSION(:,:), INTENT(OUT) :: PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF - -REAL, DIMENSION(:,:,:), INTENT(OUT):: PFLXZSVMF - -END SUBROUTINE MF_TURB - -END INTERFACE -! -END MODULE MODI_MF_TURB diff --git a/src/arome/turb/shallow_mf.F90 b/src/arome/turb/shallow_mf.F90 index 6997ea17a..88f216003 100644 --- a/src/arome/turb/shallow_mf.F90 +++ b/src/arome/turb/shallow_mf.F90 @@ -67,8 +67,8 @@ USE MODI_THL_RT_FROM_TH_R_MF USE MODI_COMPUTE_UPDRAFT USE MODI_COMPUTE_UPDRAFT_RHCJ10 USE MODI_COMPUTE_UPDRAFT_RAHA -USE MODI_MF_TURB -USE MODI_MF_TURB_EXPL +USE MODE_MF_TURB, ONLY: MF_TURB +USE MODE_MF_TURB_EXPL, ONLY: MF_TURB_EXPL USE MODE_COMPUTE_MF_CLOUD, ONLY: COMPUTE_MF_CLOUD USE MODE_COMPUTE_FRAC_ICE, ONLY : COMPUTE_FRAC_ICE ! @@ -265,9 +265,9 @@ CALL COMPUTE_MF_CLOUD(KKA,IKB,IKE,KKU,KKL,KRR,KRRL,KRRI,& ZEMF_O_RHODREF=PEMF/PRHODREF IF ( PIMPL_MF > 1.E-10 ) THEN -CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV, & + CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & - PIMPL_MF, PTSTEP, PTSTEP_MET, PTSTEP_SV, & + PIMPL_MF, PTSTEP, & PDZZ, & PRHODJ, & ZTHLM,ZTHVM,ZRTM,PUM,PVM,PSVM, & @@ -276,7 +276,7 @@ CALL MF_TURB(KKA, IKB, IKE, KKU, KKL, OMIXUV, & PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & ZFLXZSVMF ) ELSE - CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV, & + CALL MF_TURB_EXPL(KKA, IKB, IKE, KKU, KKL, OMIXUV, & PRHODJ, & ZTHLM,ZTHVM,ZRTM,PUM,PVM, & PDTHLDT_MF,PDRTDT_MF,PDUDT_MF,PDVDT_MF, & diff --git a/src/arome/turb/mf_turb.F90 b/src/common/turb/mode_mf_turb.F90 similarity index 91% rename from src/arome/turb/mf_turb.F90 rename to src/common/turb/mode_mf_turb.F90 index 66a8d9b86..86f1d2f31 100644 --- a/src/arome/turb/mf_turb.F90 +++ b/src/common/turb/mode_mf_turb.F90 @@ -1,7 +1,16 @@ -! ######spl +!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_MF_TURB +! ###################### +! +IMPLICIT NONE +CONTAINS SUBROUTINE MF_TURB(KKA,KKB,KKE,KKU,KKL,OMIXUV, & ONOMIXLG,KSV_LGBEG,KSV_LGEND, & - PIMPL, PTSTEP, PTSTEP_MET, PTSTEP_SV, & + PIMPL, PTSTEP, & PDZZ, & PRHODJ, & PTHLM,PTHVM,PRTM,PUM,PVM,PSVM, & @@ -10,9 +19,6 @@ PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & PFLXZSVMF ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK - ! ################################################################# ! ! @@ -56,11 +62,12 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAM_MFSHALL_n -! USE MODI_SHUMAN_MF, ONLY: MZM_MF USE MODI_TRIDIAG_MASSFLUX ! +USE PARKIND1, ONLY : JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +! IMPLICIT NONE ! ! @@ -78,8 +85,6 @@ INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer REAL, INTENT(IN) :: PIMPL ! degree of implicitness REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep -REAL, INTENT(IN) :: PTSTEP_MET! Timestep for meteorological variables -REAL, INTENT(IN) :: PTSTEP_SV! Timestep for tracer variables ! REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ ! metric coefficients @@ -123,19 +128,17 @@ REAL, DIMENSION(:,:,:), INTENT(OUT):: PFLXZSVMF ! REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2)) :: ZVARS - -! INTEGER :: ISV,JSV !number of scalar variables and Loop counter +REAL(KIND=JPRB) :: ZHOOK_HANDLE ! !---------------------------------------------------------------------------- ! !* 1.PRELIMINARIES ! ------------- ! +IF (LHOOK) CALL DR_HOOK('MF_TURB',0,ZHOOK_HANDLE) ! ! number of scalar var -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK('MF_TURB',0,ZHOOK_HANDLE) ISV=SIZE(PSVM,3) ! @@ -179,25 +182,25 @@ ENDIF ! 3.1 Compute the tendency for the conservative potential temperature ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) ! -CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PTHLM,PFLXZTHMF,-PEMF,PTSTEP_MET,PIMPL, & +CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PTHLM,PFLXZTHMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) ! compute new flux PFLXZTHMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-MZM_MF(ZVARS(:,:), KKA, KKU, KKL)) !!! compute THL tendency ! -PTHLDT(:,:)= (ZVARS(:,:)-PTHLM(:,:))/PTSTEP_MET +PTHLDT(:,:)= (ZVARS(:,:)-PTHLM(:,:))/PTSTEP ! ! 3.2 Compute the tendency for the conservative mixing ratio ! -CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP_MET,PIMPL, & +CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) ! compute new flux PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP(:,:)-MZM_MF(ZVARS(:,:), KKA, KKU, KKL)) !!! compute RT tendency -PRTDT(:,:) = (ZVARS(:,:)-PRTM(:,:))/PTSTEP_MET +PRTDT(:,:) = (ZVARS(:,:)-PRTM(:,:))/PTSTEP ! IF (OMIXUV) THEN @@ -246,14 +249,15 @@ DO JSV=1,ISV ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) ! CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PSVM(:,:,JSV),PFLXZSVMF(:,:,JSV),& - -PEMF,PTSTEP_SV,PIMPL,PDZZ,PRHODJ,ZVARS ) + -PEMF,PTSTEP,PIMPL,PDZZ,PRHODJ,ZVARS ) ! compute new flux PFLXZSVMF(:,:,JSV) = PEMF(:,:)*(PSV_UP(:,:,JSV)-MZM_MF(ZVARS, KKA, KKU, KKL)) ! compute Sv tendency - PSVDT(:,:,JSV)= (ZVARS(:,:)-PSVM(:,:,JSV))/PTSTEP_SV + PSVDT(:,:,JSV)= (ZVARS(:,:)-PSVM(:,:,JSV))/PTSTEP ENDDO ! IF (LHOOK) CALL DR_HOOK('MF_TURB',1,ZHOOK_HANDLE) END SUBROUTINE MF_TURB +END MODULE MODE_MF_TURB diff --git a/src/common/turb/mf_turb_expl.F90 b/src/common/turb/mode_mf_turb_expl.F90 similarity index 99% rename from src/common/turb/mf_turb_expl.F90 rename to src/common/turb/mode_mf_turb_expl.F90 index 304c5d363..2bff78e0a 100644 --- a/src/common/turb/mf_turb_expl.F90 +++ b/src/common/turb/mode_mf_turb_expl.F90 @@ -176,3 +176,4 @@ ENDIF IF (LHOOK) CALL DR_HOOK('MF_TURB_EXPL',1,ZHOOK_HANDLE) END SUBROUTINE MF_TURB_EXPL +END MODULE MODE_MF_TURB_EXPL diff --git a/src/mesonh/turb/mf_turb.f90 b/src/mesonh/turb/mf_turb.f90 deleted file mode 100644 index 2a96b713a..000000000 --- a/src/mesonh/turb/mf_turb.f90 +++ /dev/null @@ -1,332 +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 MODI_MF_TURB -! ###################### -! -INTERFACE -! ################################################################# - SUBROUTINE MF_TURB(KKA,KKB,KKE,KKU,KKL,OMIXUV, & - ONOMIXLG,KSV_LGBEG,KSV_LGEND, & - PIMPL, PTSTEP, & - PDZZ, & - PRHODJ, & - PTHLM,PTHVM,PRTM,PUM,PVM,PSVM, & - PTHLDT,PRTDT,PUDT,PVDT,PSVDT, & - PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,PSV_UP, & - PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & - PFLXZSVMF ) - -! ################################################################# -! -! -!* 1.1 Declaration of Arguments -! -! -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 - -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum -LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer -INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer -INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer -REAL, INTENT(IN) :: PIMPL ! degree of implicitness -REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep -! -REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ ! metric coefficients - -REAL, DIMENSION(:,:), INTENT(IN) :: PRHODJ ! dry density * Grid size - -! Conservative var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHLM ! conservative pot. temp. -REAL, DIMENSION(:,:), INTENT(IN) :: PRTM ! water var. where -! Virtual potential temperature at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHVM -! Momentum at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PUM -REAL, DIMENSION(:,:), INTENT(IN) :: PVM -! scalar variables at t-dt -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSVM -! -! Tendencies of conservative variables -REAL, DIMENSION(:,:), INTENT(OUT) :: PTHLDT - -REAL, DIMENSION(:,:), INTENT(OUT) :: PRTDT -! Tendencies of momentum -REAL, DIMENSION(:,:), INTENT(OUT) :: PUDT -REAL, DIMENSION(:,:), INTENT(OUT) :: PVDT -! Tendencies of scalar variables -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSVDT - - -! Updraft characteritics -REAL, DIMENSION(:,:), INTENT(IN) :: PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSV_UP -! Fluxes -REAL, DIMENSION(:,:), INTENT(OUT) :: PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF - -REAL, DIMENSION(:,:,:), INTENT(OUT):: PFLXZSVMF - -END SUBROUTINE MF_TURB - -END INTERFACE -! -END MODULE MODI_MF_TURB - - -! ################################################################# - SUBROUTINE MF_TURB(KKA,KKB,KKE,KKU,KKL,OMIXUV, & - ONOMIXLG,KSV_LGBEG,KSV_LGEND, & - PIMPL, PTSTEP, & - PDZZ, & - PRHODJ, & - PTHLM,PTHVM,PRTM,PUM,PVM,PSVM, & - PTHLDT,PRTDT,PUDT,PVDT,PSVDT, & - PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP,PSV_UP, & - PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF, & - PFLXZSVMF ) - -! ################################################################# -! -! -!!**** *MF_TURB* - computes the MF_turbulent source terms for the prognostic -!! variables. -!! -!! PURPOSE -!! ------- -!!**** The purpose of this routine is to compute the source terms in -!! the evolution equations due to the MF turbulent mixing. -!! The source term is computed as the divergence of the turbulent fluxes. -! -!!** METHOD -!! ------ -!! -!! -!! EXTERNAL -!! -------- -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! -!! -!! REFERENCE -!! --------- -!! -!! AUTHOR -!! ------ -!! -!! -!! MODIFICATIONS -!! ------------- -!! 10/2009 (C.Lac) Introduction of different PTSTEP according to the -!! advection schemes -!! 09/2010 (V.Masson) Optimization -!! S. Riette Jan 2012: support for both order of vertical levels -!! suppression of useless initialisations -!! -!! -------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_PARAM_MFSHALL_n -! -USE MODI_SHUMAN_MF -USE MODI_TRIDIAG_MASSFLUX -! -IMPLICIT NONE -! -! -!* 0.1 declarations of arguments -! -! -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 -LOGICAL, INTENT(IN) :: OMIXUV ! True if mixing of momentum -LOGICAL, INTENT(IN) :: ONOMIXLG ! False if mixing of lagrangian tracer -INTEGER, INTENT(IN) :: KSV_LGBEG ! first index of lag. tracer -INTEGER, INTENT(IN) :: KSV_LGEND ! last index of lag. tracer -REAL, INTENT(IN) :: PIMPL ! degree of implicitness -REAL, INTENT(IN) :: PTSTEP ! Dynamical timestep -! -REAL, DIMENSION(:,:), INTENT(IN) :: PDZZ ! metric coefficients - -REAL, DIMENSION(:,:), INTENT(IN) :: PRHODJ ! dry density * Grid size - -! Conservative var. at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHLM ! conservative pot. temp. -REAL, DIMENSION(:,:), INTENT(IN) :: PRTM ! water var. where -! Virtual potential temperature at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PTHVM -! Momentum at t-dt -REAL, DIMENSION(:,:), INTENT(IN) :: PUM -REAL, DIMENSION(:,:), INTENT(IN) :: PVM -! scalar variables at t-dt -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSVM -! -! Tendencies of conservative variables -REAL, DIMENSION(:,:), INTENT(OUT) :: PTHLDT - -REAL, DIMENSION(:,:), INTENT(OUT) :: PRTDT -! Tendencies of momentum -REAL, DIMENSION(:,:), INTENT(OUT) :: PUDT -REAL, DIMENSION(:,:), INTENT(OUT) :: PVDT -! Tendencies of scalar variables -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSVDT - - -! Updraft characteritics -REAL, DIMENSION(:,:), INTENT(IN) :: PEMF,PTHL_UP,PTHV_UP,PRT_UP,PU_UP,PV_UP -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSV_UP -! Fluxes -REAL, DIMENSION(:,:), INTENT(OUT) :: PFLXZTHMF,PFLXZTHVMF,PFLXZRMF,PFLXZUMF,PFLXZVMF - -REAL, DIMENSION(:,:,:), INTENT(OUT):: PFLXZSVMF -! -! -! -!------------------------------------------------------------------------------- -! -! 0.2 declaration of local variables -! - -REAL, DIMENSION(SIZE(PTHLM,1),SIZE(PTHLM,2)) :: ZVARS - -! -INTEGER :: ISV,JSV !number of scalar variables and Loop counter -! -!---------------------------------------------------------------------------- -! -!* 1.PRELIMINARIES -! ------------- -! -! -! number of scalar var -ISV=SIZE(PSVM,3) - -! -PFLXZSVMF = 0. -PSVDT = 0. - -! -!---------------------------------------------------------------------------- -! -!* 2. COMPUTE THE MEAN FLUX OF CONSERVATIVE VARIABLES at time t-dt -! (equation (3) of Soares et al) -! + THE MEAN FLUX OF THETA_V (buoyancy flux) -! ----------------------------------------------- -! ( Resulting fluxes are in flux level (w-point) as PEMF and PTHL_UP ) -! - -PFLXZTHMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-MZM_MF(KKA,KKU,KKL,PTHLM(:,:))) - -PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP(:,:)-MZM_MF(KKA,KKU,KKL,PRTM(:,:))) - -PFLXZTHVMF(:,:) = PEMF(:,:)*(PTHV_UP(:,:)-MZM_MF(KKA,KKU,KKL,PTHVM(:,:))) - -IF (OMIXUV) THEN - PFLXZUMF(:,:) = PEMF(:,:)*(PU_UP(:,:)-MZM_MF(KKA,KKU,KKL,PUM(:,:))) - PFLXZVMF(:,:) = PEMF(:,:)*(PV_UP(:,:)-MZM_MF(KKA,KKU,KKL,PVM(:,:))) -ELSE - PFLXZUMF(:,:) = 0. - PFLXZVMF(:,:) = 0. -ENDIF -! -! -!---------------------------------------------------------------------------- -! -!* 3. COMPUTE TENDENCIES OF CONSERVATIVE VARIABLES (or treated as such...) -! (implicit formulation) -! -------------------------------------------- -! - -! -! -! 3.1 Compute the tendency for the conservative potential temperature -! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) -! -CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PTHLM,PFLXZTHMF,-PEMF,PTSTEP,PIMPL, & - PDZZ,PRHODJ,ZVARS ) -! compute new flux -PFLXZTHMF(:,:) = PEMF(:,:)*(PTHL_UP(:,:)-MZM_MF(KKA,KKU,KKL,ZVARS(:,:))) - -!!! compute THL tendency -! -PTHLDT(:,:)= (ZVARS(:,:)-PTHLM(:,:))/PTSTEP - -! -! 3.2 Compute the tendency for the conservative mixing ratio -! -CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP,PIMPL, & - PDZZ,PRHODJ,ZVARS ) -! compute new flux -PFLXZRMF(:,:) = PEMF(:,:)*(PRT_UP(:,:)-MZM_MF(KKA,KKU,KKL,ZVARS(:,:))) - -!!! compute RT tendency -PRTDT(:,:) = (ZVARS(:,:)-PRTM(:,:))/PTSTEP -! - -IF (OMIXUV) THEN - ! - ! 3.3 Compute the tendency for the (non conservative but treated as it) zonal momentum - ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) - ! - - CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PUM,PFLXZUMF,-PEMF,PTSTEP,PIMPL, & - PDZZ,PRHODJ,ZVARS ) - ! compute new flux - PFLXZUMF(:,:) = PEMF(:,:)*(PU_UP(:,:)-MZM_MF(KKA,KKU,KKL,ZVARS(:,:))) - - ! compute U tendency - PUDT(:,:)= (ZVARS(:,:)-PUM(:,:))/PTSTEP - - ! - ! - ! 3.4 Compute the tendency for the (non conservative but treated as it for the time beiing) - ! meridian momentum - ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) - ! - CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PVM,PFLXZVMF,-PEMF,PTSTEP,PIMPL, & - PDZZ,PRHODJ,ZVARS ) - ! compute new flux - PFLXZVMF(:,:) = PEMF(:,:)*(PV_UP(:,:)-MZM_MF(KKA,KKU,KKL,ZVARS(:,:))) - - ! compute V tendency - PVDT(:,:)= (ZVARS(:,:)-PVM(:,:))/PTSTEP -ELSE - PUDT(:,:)=0. - PVDT(:,:)=0. -ENDIF - -DO JSV=1,ISV - - IF (ONOMIXLG .AND. JSV >= KSV_LGBEG .AND. JSV<= KSV_LGEND) CYCLE - - !* compute mean flux of scalar variables at time t-dt - ! ( Resulting fluxes are in flux level (w-point) as PEMF and PTHL_UP ) - - PFLXZSVMF(:,:,JSV) = PEMF(:,:)*(PSV_UP(:,:,JSV)-MZM_MF(KKA,KKU,KKL,PSVM(:,:,JSV))) - - ! - ! 3.5 Compute the tendency for scalar variables - ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) - ! - CALL TRIDIAG_MASSFLUX(KKA,KKB,KKE,KKU,KKL,PSVM(:,:,JSV),PFLXZSVMF(:,:,JSV),& - -PEMF,PTSTEP,PIMPL,PDZZ,PRHODJ,ZVARS ) - ! compute new flux - PFLXZSVMF(:,:,JSV) = PEMF(:,:)*(PSV_UP(:,:,JSV)-MZM_MF(KKA,KKU,KKL,ZVARS)) - - ! compute Sv tendency - PSVDT(:,:,JSV)= (ZVARS(:,:)-PSVM(:,:,JSV))/PTSTEP - -ENDDO -! -END SUBROUTINE MF_TURB diff --git a/src/mesonh/turb/shallow_mf.f90 b/src/mesonh/turb/shallow_mf.f90 index b005921d7..bca44f4cb 100644 --- a/src/mesonh/turb/shallow_mf.f90 +++ b/src/mesonh/turb/shallow_mf.f90 @@ -184,8 +184,8 @@ USE MODI_THL_RT_FROM_TH_R_MF USE MODI_COMPUTE_UPDRAFT USE MODI_COMPUTE_UPDRAFT_RHCJ10 USE MODI_COMPUTE_UPDRAFT_RAHA -USE MODI_MF_TURB -USE MODI_MF_TURB_EXPL +USE MODE_MF_TURB, ONLY: MF_TURB +USE MODE_MF_TURB_EXPL, ONLY: MF_TURB_EXPL USE MODI_MF_TURB_GREYZONE USE MODE_COMPUTE_MF_CLOUD, ONLY: COMPUTE_MF_CLOUD USE MODE_COMPUTE_FRAC_ICE, ONLY : COMPUTE_FRAC_ICE -- GitLab