Skip to content

Commit dfa39f6

Browse files
committed
Add an option to use liquid potential temperature in temperature
equation of GFS PBL scheme. (from @WeiguoWang-NOAA)
1 parent 8d1a0bf commit dfa39f6

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

physics/PBL/SATMEDMF/satmedmfvdifq.F

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, &
8282
& prsi,del,prsl,prslk,phii,phil,delt, &
8383
& dspheat,dusfc,dvsfc,dtsfc,dqsfc,hpbl,dkt,dku,tkeh, &
8484
& kinver,xkzm_m,xkzm_h,xkzm_s,dspfac,bl_upfr,bl_dnfr, &
85-
& rlmx,elmx,sfc_rlm,tc_pbl, &
85+
& rlmx,elmx,sfc_rlm,tc_pbl,use_lpt, &
8686
& ntqv,dtend,dtidx,index_of_temperature,index_of_x_wind, &
8787
& index_of_y_wind,index_of_process_pbl,gen_tend,ldiag3d, &
8888
& errmsg,errflg)
@@ -97,6 +97,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, &
9797
& ntke, ntqv
9898
integer, intent(in) :: sfc_rlm
9999
integer, intent(in) :: tc_pbl
100+
integer, intent(in) :: use_lpt
100101
integer, intent(in) :: kinver(:)
101102
integer, intent(out) :: kpbl(:)
102103
logical, intent(in) :: gen_tend,ldiag3d
@@ -259,6 +260,8 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, &
259260
real(kind=kind_phys) h1
260261

261262
real(kind=kind_phys) bfac, mffac
263+
264+
real(kind=kind_phys) qice(im,km),qliq(im,km)
262265
!!
263266
parameter(bfac=100.)
264267
parameter(wfac=7.0,cfac=4.5)
@@ -467,15 +470,20 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, &
467470
do i=1,im
468471
pix(i,k) = psk(i) / prslk(i,k)
469472
theta(i,k) = t1(i,k) * pix(i,k)
473+
qice(i,k) = 0.0
474+
qliq(i,k) = 0.0
470475
if(ntiw > 0) then
471476
tem = max(q1(i,k,ntcw),qlmin)
472477
tem1 = max(q1(i,k,ntiw),qlmin)
478+
qice(i,k) = tem1
479+
qliq(i,k) = tem
473480
qlx(i,k) = tem + tem1
474481
ptem = hvap*tem + (hvap+hfus)*tem1
475482
slx(i,k) = cp * t1(i,k) + phil(i,k) - ptem
476483
else
477484
qlx(i,k) = max(q1(i,k,ntcw),qlmin)
478485
slx(i,k) = cp * t1(i,k) + phil(i,k) - hvap*qlx(i,k)
486+
qliq(i,k) = qlx(i,k)
479487
endif
480488
tem2 = 1.+fv*max(q1(i,k,1),qmin)-qlx(i,k)
481489
thvx(i,k) = theta(i,k) * tem2
@@ -1818,6 +1826,10 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntrw, &
18181826
rdz = rdzt(i,k)
18191827
tem1 = dsig * dkt(i,k) * rdz
18201828
dsdzt = tem1 * gocp
1829+
if (use_lpt > 0) then
1830+
dsdzt = dsdzt-tem1*elocp*(qliq(i,k+1)-qliq(i,k))*rdz
1831+
& -(1+0.33/2.5)*tem1*elocp*(qice(i,k+1)-qice(i,k))*rdz
1832+
endif
18211833
dsdz2 = tem1 * rdz
18221834
au(i,k) = -dtodsd*dsdz2
18231835
al(i,k) = -dtodsu*dsdz2

physics/PBL/SATMEDMF/satmedmfvdifq.meta

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,13 @@
619619
dimensions = ()
620620
type = integer
621621
intent = in
622+
[use_lpt]
623+
standard_name = control_for_using_LPT_for_TC_applications_in_the_PBL_scheme
624+
long_name = control for using LPT in TC applications in the PBL scheme
625+
units = none
626+
dimensions = ()
627+
type = integer
628+
intent = in
622629
[ntqv]
623630
standard_name = index_of_specific_humidity_in_tracer_concentration_array
624631
long_name = tracer index for water vapor (specific humidity)

0 commit comments

Comments
 (0)