Skip to content

Commit

Permalink
Merge pull request #607 from hafs-community/feature/dkudiagnostic
Browse files Browse the repository at this point in the history
Add new PBL diagnostic variables dkt and dku
  • Loading branch information
climbfuji authored Apr 21, 2021
2 parents 045785a + 7b7eb85 commit 3dbae5d
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 8 deletions.
3 changes: 2 additions & 1 deletion physics/GFS_debug.F90
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,8 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling,
if(Model%lradar) then
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%refl_10cm ', Diag%refl_10cm)
end if
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%dkt ', Diag%dkt)
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Diag%dku ', Diag%dku)
! CCPP/MYNNPBL only
if (Model%do_mynnedmf) then
if (Model%bl_mynn_output .ne. 0) then
Expand Down Expand Up @@ -1068,7 +1070,6 @@ subroutine GFS_interstitialtoscreen_run (Model, Statein, Stateout, Sfcprop, Coup
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%del ', Interstitial%del )
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%del_gz ', Interstitial%del_gz )
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%delr ', Interstitial%delr )
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%dkt ', Interstitial%dkt )
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%dlength ', Interstitial%dlength )
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%dqdt ', Interstitial%dqdt )
call print_var(mpirank, omprank, blkno, Grid%xlat_d, Grid%xlon_d, 'Interstitial%dqsfc1 ', Interstitial%dqsfc1 )
Expand Down
11 changes: 7 additions & 4 deletions physics/moninedmf.f
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ subroutine hedmf_run (im,km,ntrac,ntcw,dv,du,tau,rtg, &
& psk,rbsoil,zorl,u10m,v10m,fm,fh, &
& tsea,heat,evap,stress,spd1,kpbl, &
& prsi,del,prsl,prslk,phii,phil,delt,dspheat, &
& dusfc,dvsfc,dtsfc,dqsfc,hpbl,hgamt,hgamq,dkt, &
& dusfc,dvsfc,dtsfc,dqsfc,hpbl,hgamt,hgamq,dkt,dku, &
& kinver,xkzm_m,xkzm_h,xkzm_s,lprnt,ipr, &
& xkzminv,moninq_fac,hurr_pbl,islimsk,var_ric, &
& coef_ric_l,coef_ric_s,lssav,ldiag3d,qdiag3d,ntoz, &
Expand Down Expand Up @@ -114,7 +114,9 @@ subroutine hedmf_run (im,km,ntrac,ntcw,dv,du,tau,rtg, &
real(kind=kind_phys), intent(out) :: &
& dusfc(im), dvsfc(im), &
& dtsfc(im), dqsfc(im), &
& hpbl(im), dkt(im,km-1)
& hpbl(im)
real(kind=kind_phys), intent(out) :: &
& dkt(im,km-1), dku(im,km-1)
real(kind=kind_phys), intent(inout) :: &
& hgamt(im), hgamq(im)
!
Expand Down Expand Up @@ -148,8 +150,8 @@ subroutine hedmf_run (im,km,ntrac,ntcw,dv,du,tau,rtg, &
& zd(im), zdd(im), thlvx1(im)
!
real(kind=kind_phys) rdzt(im,km-1),dktx(im,km-1), &
& zi(im,km+1), zl(im,km), xkzo(im,km-1), &
& dku(im,km-1), xkzmo(im,km-1), &
& zi(im,km+1), zl(im,km), &
& xkzo(im,km-1), xkzmo(im,km-1), &
& cku(im,km-1), ckt(im,km-1), &
& ti(im,km-1), shr2(im,km-1), &
& al(im,km-1), ad(im,km), &
Expand Down Expand Up @@ -1402,6 +1404,7 @@ subroutine hedmf_run (im,km,ntrac,ntcw,dv,du,tau,rtg, &
!
enddo
enddo
!
! solve tridiagonal problem for momentum
!
Expand Down
11 changes: 11 additions & 0 deletions physics/moninedmf.meta
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,15 @@
kind = kind_phys
intent = out
optional = F
[dku]
standard_name = atmosphere_momentum_diffusivity
long_name = diffusivity for momentum
units = m2 s-1
dimensions = (horizontal_loop_extent,vertical_dimension_minus_one)
type = real
kind = kind_phys
intent = out
optional = F
[kinver]
standard_name = index_of_highest_temperature_inversion
long_name = index of highest temperature inversion
Expand Down Expand Up @@ -538,6 +547,8 @@
dimensions = ()
type = real
kind = kind_phys
intent = in
optional = F
[lssav]
standard_name = flag_diagnostics
long_name = logical flag for storing diagnostics
Expand Down
8 changes: 5 additions & 3 deletions physics/satmedmfvdifq.F
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, &
& snwdph_lnd,psk,rbsoil,zorl,u10m,v10m,fm,fh, &
& tsea,heat,evap,stress,spd1,kpbl, &
& prsi,del,prsl,prslk,phii,phil,delt, &
& dspheat,dusfc,dvsfc,dtsfc,dqsfc,hpbl, &
& dspheat,dusfc,dvsfc,dtsfc,dqsfc,hpbl,dkt,dku, &
& kinver,xkzm_m,xkzm_h,xkzm_s,dspfac,bl_upfr,bl_dnfr, &
& ntoz,du3dt,dv3dt,dt3dt,dq3dt,do3dt,gen_tend,ldiag3d,qdiag3d, &
& errmsg,errflg)
Expand Down Expand Up @@ -109,6 +109,8 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, &
& dusfc(im), dvsfc(im), &
& dtsfc(im), dqsfc(im), &
& hpbl(im)
real(kind=kind_phys), intent(out) :: &
& dkt(im,km-1), dku(im,km-1)
!
logical, intent(in) :: dspheat
character(len=*), intent(out) :: errmsg
Expand All @@ -130,8 +132,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, &
& qlx(im,km), thetae(im,km),thlx(im,km),
& slx(im,km), svx(im,km), qtx(im,km),
& tvx(im,km), pix(im,km), radx(im,km-1),
& dku(im,km-1),dkt(im,km-1), dkq(im,km-1),
& cku(im,km-1),ckt(im,km-1)
& dkq(im,km-1),cku(im,km-1), ckt(im,km-1)
!
real(kind=kind_phys) plyr(im,km), rhly(im,km), cfly(im,km),
& qstl(im,km)
Expand Down Expand Up @@ -1538,6 +1539,7 @@ subroutine satmedmfvdifq_run(im,km,ntrac,ntcw,ntiw,ntke, &
!
enddo
enddo
c
!> - Call tridi2() to solve tridiagonal problem for momentum
c
Expand Down
18 changes: 18 additions & 0 deletions physics/satmedmfvdifq.meta
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,24 @@
kind = kind_phys
intent = out
optional = F
[dkt]
standard_name = atmosphere_heat_diffusivity
long_name = diffusivity for heat
units = m2 s-1
dimensions = (horizontal_loop_extent,vertical_dimension_minus_one)
type = real
kind = kind_phys
intent = out
optional = F
[dku]
standard_name = atmosphere_momentum_diffusivity
long_name = diffusivity for momentum
units = m2 s-1
dimensions = (horizontal_loop_extent,vertical_dimension_minus_one)
type = real
kind = kind_phys
intent = out
optional = F
[kinver]
standard_name = index_of_highest_temperature_inversion
long_name = index of highest temperature inversion
Expand Down

0 comments on commit 3dbae5d

Please sign in to comment.