Skip to content
Snippets Groups Projects
Commit 4fdb112a authored by RIETTE Sébastien's avatar RIETTE Sébastien
Browse files

Sébastien Riette 25/01/2022 merge mf_turb

+ correction mf_turb_expl.F90
parent af19b338
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
! ######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
......@@ -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, &
......
! ######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
......@@ -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
!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
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment