Skip to content

Commit 7a341b8

Browse files
committed
The following changes/improvements for PBL/SATMEDMF are from @JongilHan66:
a) As the current large horizontal momentum diffusivity (Kh) at large-scale and meso-scale (LSMS) looks too large, Kh is computed at zl and modified as Kh=Kq=0.4*elmh*sqrt(tke), elmh=min(1.5*sqrt(zlup*zldn,500), where zlup is parcel's upward travel length and zldn is parcel's downward travel length with tke momentum. b) Scale-aware non-local mass flux (xmf, xmfd) is now given as xmf=(1-sigma)^2 * (sigma*wu) rather than the current xmf=pfnl*c1*wu, where wu is updraft velocity, c1 is a constant, sigma is updraft fraction, and pfnl is partition function for nonlocal flux. The constant c1 is the updraft fraction in LSMS and it should be sigma in small scales as sigma becomes larger than c1 in small scales. Also, the scale-awareness parameter, (1-sigma)^2, is more physically based following Arakawa and Wu's study than the empirical parameter, pfnl. c) Refinement of scl (height of 50% of max tke): max tke can be occasionally found in Jet stream and then scl would be too large. In the update, we look for max tke below 2.5km height and then compute scl and limit to 2.5km (i.e., scl=min(max(scl,500),2500)) d) ri(gradient Richardson number) is computed as ri=bf/shr2 (1dtke) rather than ri=bf/(def_1+def_2), where bf is buoyancy, because the parameters given as a function of ri (such as Prandtl number) is derived based on ri=bf/shr2. e) TTE-EDMF (total turbulent energy based EDMF scheme) is combined into sa3dtke scheme as it shows slightly better GFS forecast skill than tke-based scheme. The logical parameter to conduct TTE-EDMF is 'tte_edmf'.
1 parent d033868 commit 7a341b8

File tree

4 files changed

+449
-466
lines changed

4 files changed

+449
-466
lines changed

physics/PBL/SATMEDMF/mfscuq.f

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ subroutine mfscuq(im,ix,km,kmscu,ntcw,ntrac1,delt,
1515
& cnvflg,zl,zm,q1,t1,u1,v1,plyr,pix,
1616
& thlx,thvx,thlvx,gdx,thetae,
1717
& krad,mrad,radmin,buo,wush,tkemean,vez0fun,xmfd,
18-
& tcdo,qcdo,ucdo,vcdo,xlamdeq,a1,
19-
!The following flag is for SA-3D-TKE (kyf)
20-
& sa3dtke)
18+
& tcdo,qcdo,ucdo,vcdo,xlamdeq,a1)
2119
!
2220
use machine , only : kind_phys
2321
use funcphys , only : fpvs
@@ -33,7 +31,6 @@ subroutine mfscuq(im,ix,km,kmscu,ntcw,ntrac1,delt,
3331
integer krad(im), mrad(im)
3432
!
3533
logical cnvflg(im)
36-
logical sa3dtke !flag for SA-3D-TKE scheme (kyf)
3734
real(kind=kind_phys) delt
3835
real(kind=kind_phys) q1(ix,km,ntrac1),t1(ix,km),
3936
& u1(ix,km), v1(ix,km),
@@ -430,16 +427,6 @@ subroutine mfscuq(im,ix,km,kmscu,ntcw,ntrac1,delt,
430427
endif
431428
enddo
432429
!
433-
!> - Set updraft fraction to 0 when using SA-3D-TKE scheme (kyf)
434-
!! Scale-aware capability is done with pfnl in satmedmfvdifq.F
435-
!! Zhu et al. (2025)
436-
!
437-
if (sa3dtke) then
438-
do i = 1, im
439-
sigma(i) = 0.
440-
enddo
441-
endif
442-
!
443430
!> - Compute scale-aware function based on
444431
!! Arakawa and Wu (2013) \cite arakawa_and_wu_2013
445432
!
@@ -460,6 +447,9 @@ subroutine mfscuq(im,ix,km,kmscu,ntcw,ntrac1,delt,
460447
do i = 1, im
461448
if(cnvflg(i) .and.
462449
& (k >= mrad(i) .and. k < krad(i))) then
450+
if (sigma(i) > ra1(i)) then
451+
xmfd(i,k) = sigma(i) * xmfd(i,k) / ra1(i)
452+
endif
463453
xmfd(i,k) = scaldfunc(i) * xmfd(i,k)
464454
dz = zl(i,k+1) - zl(i,k)
465455
xmmx = dz / dt2

0 commit comments

Comments
 (0)