Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions gfsphysics/GFS_layer/GFS_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1860,6 +1860,17 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop
ExtDiag(idx)%data(nb)%var3 => IntDiag(nb)%refl_10cm(:,:)
enddo

idx = idx + 1
ExtDiag(idx)%axes = 3
ExtDiag(idx)%name = 'dkudiagnostic'
ExtDiag(idx)%desc = 'Eddy Diffusivity'
ExtDiag(idx)%unit = 'm2s-1'
ExtDiag(idx)%mod_name = 'gfs_phys'
allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var3 => IntDiag(nb)%dkudiagnostic(:,:)
enddo

idx = idx + 1
ExtDiag(idx)%axes = 3
ExtDiag(idx)%name = 'cnvw'
Expand Down
95 changes: 61 additions & 34 deletions gfsphysics/GFS_layer/GFS_physics_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -2361,17 +2361,17 @@ subroutine GFS_physics_driver &
!*## CCPP ##
elseif (Model%isatmedmf == 1) then ! updated version of satmedmfvdif (May 2019)
!## CCPP ##* satmedmfvdifq.F/satmedmfvdifq_run Note: The conditional above is checked in satmedmfvdifq_init
call satmedmfvdifq(ix, im, levs, nvdiff, ntcw, ntiw, ntke, &
dvdt, dudt, dtdt, dqdt, &
Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, &
Radtend%htrsw, Radtend%htrlw, xmu, garea, &
Statein%prsik(1,1), rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, &
Sfcprop%ffmm, Sfcprop%ffhh, Sfcprop%tsfc, hflx, evap, &
stress, wind, kpbl, Statein%prsi, del, Statein%prsl, &
Statein%prslk, Statein%phii, Statein%phil, dtp, &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, &
kinver, Model%xkzm_m, Model%xkzm_h, Model%xkzm_s, &
Model%dspfac, Model%bl_upfr, Model%bl_dnfr)
call satmedmfvdifq(ix, im, levs, nvdiff, ntcw, ntiw, ntke, &
dvdt, dudt, dtdt, dqdt, &
Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, &
Radtend%htrsw, Radtend%htrlw, xmu, garea, &
Statein%prsik(1,1), rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, &
Sfcprop%ffmm, Sfcprop%ffhh, Sfcprop%tsfc, hflx, evap, &
stress, wind, kpbl, Statein%prsi, del, Statein%prsl, &
Statein%prslk, Statein%phii, Statein%phil, dtp, &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, &
kinver, Model%xkzm_m, Model%xkzm_h, Model%xkzm_s, &
Model%dspfac, Model%bl_upfr, Model%bl_dnfr, Diag%dkudiagnostic)
!*## CCPP ##
endif
elseif (Model%hybedmf) then
Expand All @@ -2388,17 +2388,31 @@ subroutine GFS_physics_driver &
Model%xkzm_s, lprnt, ipr, &
Model%xkzminv, Model%moninq_fac)
else
call moninedmf_hafs(ix, im, levs, nvdiff, ntcw, dvdt, dudt, dtdt, dqdt,&
Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, &
Radtend%htrsw, Radtend%htrlw, xmu, Statein%prsik(1,1), &
rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, Sfcprop%ffmm, &
Sfcprop%ffhh, Sfcprop%tsfc, qss, hflx, evap, stress, &
wind, kpbl, Statein%prsi, del, Statein%prsl, &
Statein%prslk, Statein%phii, Statein%phil, dtp, &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl,&
gamt, gamq, dkt, kinver, Model%xkzm_m, Model%xkzm_h, &
Model%xkzm_s, lprnt, ipr, &
Model%xkzminv, Model%moninq_fac,islmsk)
if (Model%moninq_fac > -2) then
call moninedmf_hafs(ix, im, levs, nvdiff, ntcw, dvdt, dudt, dtdt, dqdt, &
Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, &
Radtend%htrsw, Radtend%htrlw, xmu, Statein%prsik(1,1), &
rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, Sfcprop%ffmm, &
Sfcprop%ffhh, Sfcprop%tsfc, qss, hflx, evap, stress, &
wind, kpbl, Statein%prsi, del, Statein%prsl, &
Statein%prslk, Statein%phii, Statein%phil, dtp, &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, &
gamt, gamq, dkt, kinver, Model%xkzm_m, Model%xkzm_h, &
Model%xkzm_s, lprnt, ipr, &
Model%xkzminv, Model%moninq_fac,islmsk,Diag%dkudiagnostic)
else
call moninedmf_hafs_pzhu(ix, im, levs, nvdiff, ntcw, dvdt, dudt, dtdt, &
dqdt, Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, &
Radtend%htrsw, Radtend%htrlw, xmu, Statein%prsik(1,1), &
rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, Sfcprop%ffmm, &
Sfcprop%ffhh, Sfcprop%tsfc, qss, hflx, evap, stress, &
wind, kpbl, Statein%prsi, del, Statein%prsl, &
Statein%prslk, Statein%phii, Statein%phil, dtp, &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, &
gamt, gamq, dkt, kinver, Model%xkzm_m, Model%xkzm_h, &
Model%xkzm_s, lprnt, ipr, &
Model%xkzminv, Model%moninq_fac,islmsk,Diag%dkudiagnostic)
endif
endif
! if (lprnt) write(0,*)' dtdtm=',(dtdt(ipr,k),k=1,15)
! if (lprnt) write(0,*)' dqdtm=',(dqdt(ipr,k,1),k=1,15)
Expand Down Expand Up @@ -2614,17 +2628,17 @@ subroutine GFS_physics_driver &
!*## CCPP ##
elseif (Model%isatmedmf == 1) then ! updated version of satmedmfvdif (May 2019)
!## CCPP ##* satmedmfvdifq.F/satmedmfvdifq_run Note: The conditional above is checked in satmedmfvdifq_init
call satmedmfvdifq(ix, im, levs, nvdiff, ntcw, ntiwx, ntkev, &
dvdt, dudt, dtdt, dvdftra, &
Statein%ugrs, Statein%vgrs, Statein%tgrs, vdftra, &
Radtend%htrsw, Radtend%htrlw, xmu, garea, &
Statein%prsik(1,1), rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, &
Sfcprop%ffmm, Sfcprop%ffhh, Sfcprop%tsfc, hflx, evap, &
stress, wind, kpbl, Statein%prsi, del, Statein%prsl, &
Statein%prslk, Statein%phii, Statein%phil, dtp, &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, &
kinver, Model%xkzm_m, Model%xkzm_h, Model%xkzm_s, &
Model%dspfac, Model%bl_upfr, Model%bl_dnfr)
call satmedmfvdifq(ix, im, levs, nvdiff, ntcw, ntiwx, ntkev, &
dvdt, dudt, dtdt, dvdftra, &
Statein%ugrs, Statein%vgrs, Statein%tgrs, vdftra, &
Radtend%htrsw, Radtend%htrlw, xmu, garea, &
Statein%prsik(1,1), rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, &
Sfcprop%ffmm, Sfcprop%ffhh, Sfcprop%tsfc, hflx, evap, &
stress, wind, kpbl, Statein%prsi, del, Statein%prsl, &
Statein%prslk, Statein%phii, Statein%phil, dtp, &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, &
kinver, Model%xkzm_m, Model%xkzm_h, Model%xkzm_s, &
Model%dspfac, Model%bl_upfr, Model%bl_dnfr, Diag%dkudiagnostic)
!*## CCPP ##
endif
elseif (Model%hybedmf) then
Expand All @@ -2645,6 +2659,7 @@ subroutine GFS_physics_driver &
!*## CCPP ##
!## CCPP ##* The following schemes are not in the CCPP yet.
else
if ( Model%moninq_fac > -2 ) then
call moninedmf_hafs(ix, im, levs, nvdiff, ntcw, dvdt, dudt, dtdt, dvdftra, &
Statein%ugrs, Statein%vgrs, Statein%tgrs, vdftra, &
Radtend%htrsw, Radtend%htrlw, xmu, Statein%prsik(1,1), &
Expand All @@ -2655,7 +2670,19 @@ subroutine GFS_physics_driver &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, &
gamt, gamq, dkt, kinver, Model%xkzm_m, Model%xkzm_h, &
Model%xkzm_s, lprnt, ipr, &
Model%xkzminv, Model%moninq_fac,islmsk)
Model%xkzminv, Model%moninq_fac,islmsk, Diag%dkudiagnostic)
call moninedmf_hafs_pzhu(ix, im, levs, nvdiff, ntcw, dvdt, dudt, dtdt, &
dvdftra, Statein%ugrs, Statein%vgrs, Statein%tgrs, vdftra, &
Radtend%htrsw, Radtend%htrlw, xmu, Statein%prsik(1,1), &
rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, Sfcprop%ffmm, &
Sfcprop%ffhh, Sfcprop%tsfc, qss, hflx, evap, stress, &
wind, kpbl, Statein%prsi, del, Statein%prsl, &
Statein%prslk, Statein%phii, Statein%phil, dtp, &
Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, &
gamt, gamq, dkt, kinver, Model%xkzm_m, Model%xkzm_h, &
Model%xkzm_s, lprnt, ipr, &
Model%xkzminv, Model%moninq_fac,islmsk, Diag%dkudiagnostic)
endif
endif
elseif (.not. Model%old_monin) then
call moninq(ix, im, levs, nvdiff, ntcw, dvdt, dudt, dtdt, dvdftra, &
Expand Down
12 changes: 11 additions & 1 deletion gfsphysics/GFS_layer/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1475,7 +1475,11 @@ module GFS_typedefs
#endif

!--- MP quantities for 3D diagnositics
real (kind=kind_phys), pointer :: refl_10cm(:,:) => null() !< instantaneous refl_10cm
real (kind=kind_phys), pointer :: refl_10cm(:,:) => null() !< instantaneous refl_10cm

!--- Extra PBL diagnostics
real (kind=kind_phys), pointer :: dkudiagnostic(:,:) => null() !< Eddy diffusitivity from the EDMF and EDMF-TKE

!
!---vay-2018 UGWP-diagnostics daily mean
!
Expand Down Expand Up @@ -5248,6 +5252,9 @@ subroutine diag_create (Diag, IM, Model)
!--- 3D diagnostics for Thompson MP / GFDL MP
allocate (Diag%refl_10cm(IM,Model%levs))

!--- New PBL Diagnostics
allocate (Diag%dkudiagnostic(IM,Model%levs))

!-- New max hourly diag.
allocate (Diag%refdmax(IM))
allocate (Diag%refdmax263k(IM))
Expand Down Expand Up @@ -5543,6 +5550,9 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center)
endif
!-----------------------------

! Extra PBL diagnostics
Diag%dkudiagnostic = zero

! max hourly diagnostics
Diag%refl_10cm = zero
Diag%refdmax = -35.
Expand Down