Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Radar-derived microphysics temperature tendencies similar to operational HRRR #457

Merged
Show file tree
Hide file tree
Changes from 112 commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
9328c87
Merge pull request #1 from NOAA-EMC/develop
DeniseWorthen Nov 18, 2019
cb908e9
Merge pull request #2 from NOAA-EMC/develop
DeniseWorthen Dec 2, 2019
c96eaef
Merge pull request #3 from NOAA-EMC/develop
DeniseWorthen Dec 6, 2019
1067e95
Merge pull request #4 from NOAA-EMC/develop
DeniseWorthen Jan 4, 2020
c8abdc6
Merge pull request #9 from NOAA-EMC/develop
DeniseWorthen Jan 16, 2020
3e0e847
Merge pull request #10 from NOAA-EMC/develop
DeniseWorthen Jan 25, 2020
5b2831e
Merge pull request #12 from NOAA-EMC/develop
DeniseWorthen Feb 18, 2020
69b7a01
Merge pull request #13 from NOAA-EMC/develop
DeniseWorthen Mar 23, 2020
2a2b89a
Merge pull request #15 from NOAA-EMC/develop
DeniseWorthen Apr 3, 2020
0671b18
Merge pull request #16 from NOAA-EMC/develop
DeniseWorthen Apr 17, 2020
1e25e61
Merge pull request #17 from NOAA-EMC/develop
DeniseWorthen Apr 17, 2020
fce0b06
Merge pull request #18 from NOAA-EMC/develop
DeniseWorthen Apr 23, 2020
e655629
Merge pull request #19 from NOAA-EMC/develop
DeniseWorthen Apr 24, 2020
3df3898
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Jun 26, 2020
7f89d1f
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Aug 1, 2020
d3a9665
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Aug 12, 2020
c2aae4e
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Aug 16, 2020
a1e05e0
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Aug 27, 2020
24d4fe6
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Sep 2, 2020
ebfcf47
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Sep 2, 2020
ff8c950
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Nov 2, 2020
7e1489d
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Nov 3, 2020
9619fe7
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Nov 12, 2020
a87558f
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Nov 16, 2020
d8e5772
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Nov 18, 2020
484782a
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Nov 30, 2020
5514ecc
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Dec 2, 2020
7beaa31
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Dec 16, 2020
624b4e2
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Dec 18, 2020
e174f2a
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Jan 12, 2021
1f2356a
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Jan 14, 2021
3000a5f
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Jan 20, 2021
c3475dc
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Jan 27, 2021
ccd81ee
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Jan 30, 2021
147e4eb
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Feb 8, 2021
006e6f9
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Feb 16, 2021
38041e6
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Feb 19, 2021
f61a8f7
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Feb 25, 2021
33e440e
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Mar 3, 2021
1276541
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Mar 11, 2021
44fff6d
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Mar 16, 2021
7ad23d9
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Mar 18, 2021
e14c8e4
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Mar 21, 2021
9b510fc
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Mar 26, 2021
97d5e0f
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Mar 30, 2021
54b76d7
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Mar 31, 2021
869844d
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Apr 5, 2021
6252c14
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Apr 10, 2021
72176d4
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Apr 12, 2021
bc0b9e0
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Apr 15, 2021
e157ef7
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Apr 26, 2021
346ec41
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Apr 29, 2021
23bed1f
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen Apr 30, 2021
ab82a7f
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen May 4, 2021
497008e
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen May 10, 2021
941febe
Merge remote-tracking branch 'upstream/develop' into develop
DeniseWorthen May 12, 2021
b4c84c8
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Jun 12, 2021
7fe1c01
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Jul 9, 2021
4cb4ac0
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Jul 20, 2021
f2dd659
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Jul 26, 2021
e53ab50
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Jul 28, 2021
86e002c
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Aug 3, 2021
b4d07ef
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Aug 6, 2021
a1cc24b
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Aug 17, 2021
f8ecc62
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Aug 18, 2021
346ea3c
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Sep 22, 2021
10c3f53
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Sep 24, 2021
2d263ba
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Sep 24, 2021
c1a94ed
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Sep 27, 2021
4621420
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Sep 29, 2021
7d09993
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Sep 30, 2021
5db51be
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Oct 1, 2021
d5c8019
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Oct 6, 2021
4035970
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Oct 7, 2021
30aee82
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Oct 19, 2021
55a8500
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Oct 22, 2021
f20dfb5
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Oct 25, 2021
d95e8ad
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Oct 29, 2021
0355de6
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Nov 11, 2021
60e2ea8
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Nov 18, 2021
134ff12
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Dec 17, 2021
4021143
HRRR-like radar-derived temperature tendencies
SamuelTrahanNOAA Dec 21, 2021
52820af
Update ccpp/physics to main
SamuelTrahanNOAA Dec 25, 2021
663d527
Give a warning when convection is enabled with radar tten
SamuelTrahanNOAA Dec 27, 2021
7db2c60
Merge remote-tracking branch 'origin/develop' into feature/radar-tten…
SamuelTrahanNOAA Dec 27, 2021
e3e0b7d
Point to the correct branch of ccpp-physics
SamuelTrahanNOAA Dec 27, 2021
bcb4897
Fix uninitialized variable zmtnblck in ccpp/data/GFS_typedefs.F90
climbfuji Dec 29, 2021
a53b72a
Fix typo in CCPP standard name for ncnvwind in ccpp/data/GFS_typedefs…
climbfuji Dec 29, 2021
a4ee4de
Add ten 2d variables required for MYNNSFC restart reproducibility to …
climbfuji Dec 29, 2021
49cb29e
Update .gitmodules and submodule pointer for ccpp-physics for code re…
climbfuji Dec 29, 2021
8e9618e
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into myn…
climbfuji Dec 29, 2021
b1fa8c7
Update ccpp/physics to NCAR main
SamuelTrahanNOAA Dec 29, 2021
b9a641d
Merge remote-tracking branch 'community/develop' into feature/radar-t…
SamuelTrahanNOAA Dec 29, 2021
a4470b4
point to feature/radar-tten-ufs-community-20211229 branch of ccpp/phy…
SamuelTrahanNOAA Dec 29, 2021
c5c5b43
Remove an unneeded print statement
SamuelTrahanNOAA Dec 29, 2021
d4a7589
indicate dfi radar vars are only active if num_dfi_radar>0
SamuelTrahanNOAA Dec 30, 2021
203c762
pull prior changes
SamuelTrahanNOAA Dec 30, 2021
1d9ec22
Merge branch 'NOAA-EMC:develop' into develop
DeniseWorthen Jan 3, 2022
e9363d4
create initial p8 suites
DeniseWorthen Jan 3, 2022
0cdf830
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into myn…
climbfuji Jan 3, 2022
cee3aa0
Merge pull request #10 from DeniseWorthen/feature/p8suites
climbfuji Jan 4, 2022
9a5e4aa
updating .gitmodules
SMoorthi-emc Jan 4, 2022
7faffc0
creating a new branch for PR
SMoorthi-emc Jan 4, 2022
73d9fd3
changes requested by reviewers
SamuelTrahanNOAA Jan 4, 2022
1c2de53
add units to standard_name = radar_derived_microphysics_temperature_t…
SamuelTrahanNOAA Jan 5, 2022
a8b3501
adding threading to module_block_data.F90 which improves performance
SMoorthi-emc Jan 5, 2022
01ae48c
after merge with fv3atm/develop
SMoorthi-emc Jan 5, 2022
bddc2ed
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into myn…
climbfuji Jan 6, 2022
337079a
Merge branch 'mynnsfc_restart' of https://github.com/climbfuji/fv3atm…
climbfuji Jan 6, 2022
f292206
after submodule sync
SMoorthi-emc Jan 6, 2022
82c0eba
Update submodule pointer for ccpp-physics
climbfuji Jan 6, 2022
6332b97
Revert .gitmodules and update submodule pointer for ccpp-physics
climbfuji Jan 6, 2022
71d76aa
Merge develop
SamuelTrahanNOAA Jan 7, 2022
1fec117
Merge remote-tracking branch 'dom/mynnsfc_restart' into feature/radar…
SamuelTrahanNOAA Jan 7, 2022
b5c830d
Merge remote-tracking branch 'community/develop' into feature/radar-t…
SamuelTrahanNOAA Jan 7, 2022
5fd3e1c
after merge with fv3atm/develop
SMoorthi-emc Jan 7, 2022
e98274e
move some code into a subroutine
SamuelTrahanNOAA Jan 7, 2022
8c0e04f
Switch from specified dimensions to implied shape ( (:,:) instead of …
SamuelTrahanNOAA Jan 7, 2022
9c8930b
remove a pointer declaration in ccpp/physics
SamuelTrahanNOAA Jan 7, 2022
d3b4c1b
Merge PR #461
SamuelTrahanNOAA Jan 7, 2022
f562378
Merge develop
SamuelTrahanNOAA Jan 10, 2022
bc139a7
point to NCAR main ccpp-physics repo
SamuelTrahanNOAA Jan 11, 2022
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
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
branch = main
[submodule "ccpp/physics"]
path = ccpp/physics
url = https://github.com/NCAR/ccpp-physics
branch = main
url = https://github.com/SamuelTrahanNOAA/ccpp-physics
branch = feature/radar-tten-ufs-community-20211229
[submodule "upp"]
path = upp
url = https://github.com/NOAA-EMC/UPP
Expand Down
140 changes: 133 additions & 7 deletions ccpp/data/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ module GFS_typedefs
integer, parameter :: naux2dmax = 20 !< maximum number of auxiliary 2d arrays in output (for debugging)
integer, parameter :: naux3dmax = 20 !< maximum number of auxiliary 3d arrays in output (for debugging)

integer, parameter :: dfi_radar_max_intervals = 4 !< Number of radar-derived temperature tendency and/or convection suppression intervals. Do not change.

real(kind=kind_phys), parameter :: limit_unspecified = 1e12 !< special constant for "namelist value was not provided" in radar-derived temperature tendency limit range

!> \section arg_table_GFS_typedefs
!! \htmlinclude GFS_typedefs.html
!!
Expand Down Expand Up @@ -802,6 +806,15 @@ module GFS_typedefs
real(kind=kind_phys) :: tcr
real(kind=kind_phys) :: tcrf
!
integer :: num_dfi_radar !< number of timespans with radar-prescribed temperature tendencies
real (kind=kind_phys) :: fh_dfi_radar(1+dfi_radar_max_intervals) !< begin+end of timespans to receive radar-prescribed temperature tendencies
logical :: do_cap_suppress !< enable convection suppression in GF scheme if fh_dfi_radar is specified
real (kind=kind_phys) :: radar_tten_limits(2) !< radar_tten values outside this range (min,max) are discarded
integer :: ix_dfi_radar(dfi_radar_max_intervals) = -1 !< Index within dfi_radar_tten of each timespan (-1 means "none")
integer :: dfi_radar_max_intervals
integer :: dfi_radar_max_intervals_plus_one

!
logical :: effr_in !< eg to turn on ffective radii for MG
logical :: microp_uniform
logical :: do_cldliq
Expand Down Expand Up @@ -1197,6 +1210,7 @@ module GFS_typedefs
integer :: index_of_process_conv_trans !< tracer changes caused by convective transport
integer :: index_of_process_physics !< tracer changes caused by physics schemes
integer :: index_of_process_non_physics !< tracer changes caused by everything except physics schemes
integer :: index_of_process_dfi_radar !< tracer changes caused by radar mp temperature tendency forcing
integer :: index_of_process_photochem !< all changes to ozone
logical, pointer :: is_photochem(:) => null()!< flags for which processes should be summed as photochemical

Expand Down Expand Up @@ -1454,6 +1468,10 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: phy_myj_a1t(:) => null() !
real (kind=kind_phys), pointer :: phy_myj_a1q(:) => null() !

!--- DFI Radar
real (kind=kind_phys), pointer :: dfi_radar_tten(:,:,:) => null() !
real (kind=kind_phys), pointer :: cap_suppress(:,:) => null() !

contains
procedure :: create => tbd_create !< allocate array data
end type GFS_tbd_type
Expand Down Expand Up @@ -3206,7 +3224,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
logical :: mg_do_hail = .false. !< set .true. to turn on prognostic hail (with fprcp=2)
logical :: mg_do_ice_gmao = .false. !< set .true. to turn on gmao ice formulation
logical :: mg_do_liq_liu = .true. !< set .true. to turn on liu liquid treatment

real(kind=kind_phys) :: fh_dfi_radar(1+dfi_radar_max_intervals) = -2e10 !< begin&end of four timespans over which radar_tten is applied
logical :: do_cap_suppress = .true. !< set .true. to turn on convection suppression in GF scheme during limited intervals when fh_dfi_radar is enabled

!--- Thompson microphysical parameters
logical :: ltaerosol = .false. !< flag for aerosol version
Expand Down Expand Up @@ -3543,6 +3562,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
integer, parameter :: max_scav_factors = 25
character(len=40) :: fscav_aero(max_scav_factors)

real(kind=kind_phys) :: radar_tten_limits(2) = (/ limit_unspecified, limit_unspecified /)
integer :: itime

!--- END NAMELIST VARIABLES

NAMELIST /gfs_physics_nml/ &
Expand Down Expand Up @@ -3663,7 +3685,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
max_lon, max_lat, min_lon, min_lat, rhcmax, huge, &
phys_version, &
!--- aerosol scavenging factors ('name:value' string array)
fscav_aero
fscav_aero, &
!--- (DFI) time ranges with radar-prescribed microphysics tendencies
! and (maybe) convection suppression
fh_dfi_radar, radar_tten_limits, do_cap_suppress

!--- other parameters
integer :: nctp = 0 !< number of cloud types in CS scheme
Expand Down Expand Up @@ -3737,6 +3762,14 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%flag_for_scnv_generic_tend = .true.
Model%flag_for_dcnv_generic_tend = .true.

Model%fh_dfi_radar = fh_dfi_radar
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if that whole block 3764-3819 should go into its own subroutine.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Model%num_dfi_radar = 0
Model%dfi_radar_max_intervals = dfi_radar_max_intervals ! module-level parameter, top of file
Model%dfi_radar_max_intervals_plus_one = dfi_radar_max_intervals + 1
Model%do_cap_suppress = do_cap_suppress

call control_initialize_radar_tten(Model, radar_tten_limits)

if(gwd_opt==1) then
if(me==master) &
write(*,*) 'FLAG: gwd_opt==1 so gwd not generic'
Expand Down Expand Up @@ -4508,17 +4541,18 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%index_of_process_rayleigh_damping = 12
Model%index_of_process_nonorographic_gwd = 13
Model%index_of_process_conv_trans = 14
Model%index_of_process_dfi_radar = 15

! Number of processes to sum (last index of prior set)
Model%nprocess_summed = 14
Model%nprocess_summed = Model%index_of_process_dfi_radar

! Sums of other processes, which must be after nprocess_summed:
Model%index_of_process_physics = 15
Model%index_of_process_non_physics = 16
Model%index_of_process_photochem = 17
Model%index_of_process_physics = Model%nprocess_summed+1
Model%index_of_process_non_physics = Model%nprocess_summed+2
Model%index_of_process_photochem = Model%nprocess_summed+3

! Total number of processes (last index of prior set)
Model%nprocess = 17
Model%nprocess = Model%index_of_process_photochem

! List which processes should be summed as photochemical:
allocate(Model%is_photochem(Model%nprocess))
Expand Down Expand Up @@ -4633,6 +4667,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
call label_dtend_cause(Model,Model%index_of_process_ozmix,'o3mix','tendency due to ozone mixing ratio')
call label_dtend_cause(Model,Model%index_of_process_temp,'temp','tendency due to temperature')
call label_dtend_cause(Model,Model%index_of_process_overhead_ozone,'o3column','tendency due to overhead ozone column')
call label_dtend_cause(Model,Model%index_of_process_dfi_radar,'dfi_radar','tendency due to dfi radar mp temperature forcing')
call label_dtend_cause(Model,Model%index_of_process_photochem,'photochem','tendency due to photochemical processes')
call label_dtend_cause(Model,Model%index_of_process_physics,'phys','tendency due to physics')
call label_dtend_cause(Model,Model%index_of_process_non_physics,'nophys','tendency due to non-physics processes', &
Expand All @@ -4650,6 +4685,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
call fill_dtidx(Model,dtend_select,Model%index_of_temperature,Model%index_of_process_dcnv,have_dcnv)
call fill_dtidx(Model,dtend_select,Model%index_of_temperature,Model%index_of_process_scnv,have_scnv)
call fill_dtidx(Model,dtend_select,Model%index_of_temperature,Model%index_of_process_mp,have_mp)
call fill_dtidx(Model,dtend_select,Model%index_of_temperature,Model%index_of_process_dfi_radar,have_mp .and. Model%num_dfi_radar>0)
call fill_dtidx(Model,dtend_select,Model%index_of_temperature,Model%index_of_process_orographic_gwd)
call fill_dtidx(Model,dtend_select,Model%index_of_temperature,Model%index_of_process_rayleigh_damping,have_rdamp)
call fill_dtidx(Model,dtend_select,Model%index_of_temperature,Model%index_of_process_nonorographic_gwd)
Expand Down Expand Up @@ -5296,6 +5332,68 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &

end subroutine control_initialize

subroutine control_initialize_radar_tten(Model, radar_tten_limits)
implicit none

! Helper subroutine for initializing variables for radar-derived
! temperature tendency or convection suppression.

class(GFS_control_type) :: Model
real(kind_phys) :: radar_tten_limits(2)
integer :: i

Model%num_dfi_radar = 0
do i=1,dfi_radar_max_intervals
if(Model%fh_dfi_radar(i)>-1e10 .and. Model%fh_dfi_radar(i+1)>-1e10) then
Model%num_dfi_radar = Model%num_dfi_radar+1
Model%ix_dfi_radar(i) = Model%num_dfi_radar
else
Model%ix_dfi_radar(i) = -1
endif
enddo

if(Model%num_dfi_radar>0) then
if(radar_tten_limits(1)==limit_unspecified) then
if(radar_tten_limits(2)==limit_unspecified) then
radar_tten_limits(1) = -19
radar_tten_limits(2) = 19
if(Model%me==Model%master) then
write(0,*) 'Warning: using internal defaults for radar_tten_limits. If the oceans boil, try different values.'
write(0,'(A,F12.4,A)') 'radar_tten_limits(1) = ',radar_tten_limits(1),' <-- lower limit'
write(0,'(A,F12.4,A)') 'radar_tten_limits(2) = ',radar_tten_limits(2),' <-- upper limit'
endif
else
radar_tten_limits(1) = -abs(radar_tten_limits(2))
radar_tten_limits(2) = abs(radar_tten_limits(2))
endif
else if(radar_tten_limits(2)==limit_unspecified) then
radar_tten_limits(1) = -abs(radar_tten_limits(1))
radar_tten_limits(2) = abs(radar_tten_limits(1))
else if(radar_tten_limits(1)>radar_tten_limits(2)) then
if(Model%me==Model%master) then
write(0,*) 'Error: radar_tten_limits lower limit is higher than upper!'
write(0,'(A,F12.4,A)') 'radar_tten_limits(1) = ',radar_tten_limits(1),' <-- lower limit'
write(0,'(A,F12.4,A)') 'radar_tten_limits(2) = ',radar_tten_limits(2),' <-- upper limit'
write(0,*) "If you do not want me to apply the prescribed tendencies, just say so! Remove fh_dfi_radar from your namelist."
stop
endif
else
!o! Rejoice !o! Radar_tten_limits had lower and upper bounds.
endif
Model%radar_tten_limits = radar_tten_limits

if(Model%do_cap_suppress) then
if(Model%me==Model%master .and. Model%imfdeepcnv>=0) then
if(Model%imfdeepcnv/=3) then
write(0,*) 'Warning: untested configuration in use! Radar-derived convection suppression is only supported for the GF deep scheme. That feature will be inactive, but microphysics tendencies will still be enabled. This combination is untested. Beware!'
else
write(0,*) 'Warning: experimental configuration in use! Radar-derived convection suppression is experimental (GF deep scheme with fh_dfi_radar).'
endif
endif
endif
endif

end subroutine control_initialize_radar_tten

!---------------------------
! GFS_control%init_chemistry
Expand Down Expand Up @@ -5404,6 +5502,9 @@ subroutine control_print(Model)
!--- interface variables
class(GFS_control_type) :: Model

!--- local variables
integer :: i

if (Model%me == Model%master) then
print *, ' '
print *, 'basic control parameters'
Expand Down Expand Up @@ -5571,6 +5672,18 @@ subroutine control_print(Model)
print *, ' icloud : ', Model%icloud
print *, ' '
endif
if (Model%num_dfi_radar>0) then
print *, ' num_dfi_radar : ', Model%num_dfi_radar
print *, ' do_cap_suppress : ', Model%do_cap_suppress
do i = 1, dfi_radar_max_intervals+1
8888 format(' fh_dfi_radar(',I0,') :',F12.4)
if(Model%fh_dfi_radar(i)>-1e10) then
print 8888,i,Model%fh_dfi_radar(i)
endif
enddo
9999 format(' radar_tten_limits: ', F12.4, ' ... ',F12.4)
print 9999,Model%radar_tten_limits(1),Model%radar_tten_limits(2)
endif
print *, 'land/surface model parameters'
print *, ' lsm : ', Model%lsm
print *, ' lsoil : ', Model%lsoil
Expand Down Expand Up @@ -5950,6 +6063,19 @@ subroutine tbd_create (Tbd, IM, Model)
Tbd%icsdlw = zero
endif

!--- DFI radar forcing
nullify(Tbd%dfi_radar_tten)
nullify(Tbd%cap_suppress)
if(Model%num_dfi_radar>0) then
allocate(Tbd%dfi_radar_tten(IM,Model%levs,Model%num_dfi_radar))
Tbd%dfi_radar_tten = -20.0
Tbd%dfi_radar_tten(:,1,:) = zero
if(Model%do_cap_suppress) then
allocate(Tbd%cap_suppress(IM,Model%num_dfi_radar))
Tbd%cap_suppress(:,:) = zero
endif
endif

!--- ozone and stratosphere h2o needs
allocate (Tbd%ozpl (IM,levozp,oz_coeff))
allocate (Tbd%h2opl (IM,levh2o,h2o_coeff))
Expand Down
66 changes: 66 additions & 0 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -3381,6 +3381,24 @@
dimensions = ()
type = real
kind = kind_phys
[num_dfi_radar]
standard_name = number_of_radar_derived_temperature_or_convection_suppression_intervals
long_name = number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression
units = count
dimensions = ()
type = integer
[dfi_radar_max_intervals]
standard_name = maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals
long_name = maximum allowed number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression
units = count
dimensions = ()
type = integer
[dfi_radar_max_intervals_plus_one]
standard_name = maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals_plus_one
long_name = one more than the maximum allowed number of time ranges with radar-derived microphysics temperature tendencies or radar-derived convection suppression
units = count
dimensions = ()
type = integer
[effr_in]
standard_name = flag_for_cloud_effective_radii
long_name = flag for cloud effective radii calculations in GFDL microphysics
Expand Down Expand Up @@ -3459,6 +3477,32 @@
units = flag
dimensions = ()
type = logical
[radar_tten_limits]
standard_name = allowed_bounds_of_radar_prescribed_tendencies
long_name = allowed bounds of prescribed microphysics temperature tendencies
units = K s-1
dimensions = (2)
type = real
kind = kind_phys
[do_cap_suppress]
standard_name = flag_for_radar_derived_convection_suppression
long_name = flag for radar-derived convection suppression
units = flag
dimensions = ()
type = logical
[fh_dfi_radar]
standard_name = forecast_lead_times_bounding_radar_derived_temperature_or_convection_suppression_intervals
long_name = forecast lead times bounding radar derived temperature or convection suppression intervals
units = h
dimensions = (maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals_plus_one)
type = real
kind = kind_phys
[ix_dfi_radar]
standard_name = indices_with_radar_derived_temperature_or_convection_suppression_data
long_name = indices with radar derived temperature or convection suppression data
units = index
dimensions = (maximum_number_of_radar_derived_temperature_or_convection_suppression_intervals)
type = integer
[shoc_parm(1)]
standard_name = pressure_threshold_for_increased_tke_dissipation
long_name = pressure below which extra TKE diss. is applied in SHOC
Expand Down Expand Up @@ -4720,6 +4764,12 @@
units = index
dimensions = ()
type = integer
[index_of_process_dfi_radar]
standard_name = index_of_radar_derived_microphysics_temperature_forcing_in_cumulative_change_index
long_name = index of radar-derived microphysics temperature forcing in second dimension of array cumulative change index
units = index
dimensions = ()
type = integer
[index_of_process_physics]
standard_name = index_of_all_physics_process_in_cumulative_change_index
long_name = index of all physics transport process in second dimension of array cumulative change index
Expand Down Expand Up @@ -6242,6 +6292,22 @@
type = real
kind = kind_phys
active = (flag_for_mellor_yamada_janjic_surface_layer_scheme .or. flag_for_mellor_yamada_janjic_pbl_scheme)
[dfi_radar_tten]
standard_name = radar_derived_microphysics_temperature_tendency
long_name = radar-derived microphysics temperature tendency
units = K s-1
dimensions = (horizontal_loop_extent,vertical_layer_dimension,number_of_radar_derived_temperature_or_convection_suppression_intervals)
type = real
kind = kind_phys
active = (number_of_radar_derived_temperature_or_convection_suppression_intervals>0)
[cap_suppress]
standard_name = radar_derived_convection_suppression
long_name = radar-derived convection suppression
units = unitless
dimensions = (horizontal_loop_extent,number_of_radar_derived_temperature_or_convection_suppression_intervals)
type = real
kind = kind_phys
active = (number_of_radar_derived_temperature_or_convection_suppression_intervals>0 .and. flag_for_radar_derived_convection_suppression)

########################################################################
[ccpp-table-properties]
Expand Down
21 changes: 20 additions & 1 deletion ccpp/driver/GFS_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop
type(GFS_init_type), intent(in) :: Init_parm

!--- local variables
integer :: idt, idx, num, nb, nblks, NFXR, idtend, ichem, itrac, iprocess
integer :: idt, idx, num, nb, nblks, NFXR, idtend, ichem, itrac, iprocess, i
character(len=2) :: xtra
real(kind=kind_phys), parameter :: cn_one = 1._kind_phys
real(kind=kind_phys), parameter :: cn_100 = 100._kind_phys
Expand Down Expand Up @@ -3476,6 +3476,25 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop
enddo
end if thompson_extended_diagnostics

do i=1,Model%num_dfi_radar
idx = idx + 1
ExtDiag(idx)%axes = 3
if(i>1) then
write(ExtDiag(idx)%name,'(A,I0)') 'radar_tten_',i
else
ExtDiag(idx)%name = 'radar_tten'
endif
write(ExtDiag(idx)%desc,'(A,I0,A,I0)') 'temperature tendency due to dfi radar tendencies ',i,' of ',Model%num_dfi_radar
ExtDiag(idx)%unit = 'K s-1'
ExtDiag(idx)%mod_name = 'gfs_phys'
ExtDiag(idx)%time_avg = .FALSE.

allocate (ExtDiag(idx)%data(nblks))
do nb = 1,nblks
ExtDiag(idx)%data(nb)%var3 => Tbd(nb)%dfi_radar_tten(:,:,i)
enddo
enddo

!! Cloud effective radii from Microphysics
!if (Model%imp_physics == Model%imp_physics_thompson .or. Model%imp_physics == Model%imp_physics_wsm6 .or. Model%imp_physics == Model%imp_physics_fer_hires) then
! idx = idx + 1
Expand Down
Loading