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

Improvements to radiation code #514

Merged
merged 12 commits into from
Nov 13, 2020
Merged
Show file tree
Hide file tree
Changes from 9 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
415 changes: 5 additions & 410 deletions physics/GFS_cloud_diagnostics.F90

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion physics/GFS_rrtmg_pre.meta
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
type = scheme
dependencies = funcphys.f90,iounitdef.f,machine.F,module_bfmicrophysics.f,module_mp_radar.F90,module_mp_thompson.F90
dependencies = module_mp_thompson_make_number_concentrations.F90,physcons.F90,physparam.f,radcons.f90,radiation_aerosols.f
dependencies = radiation_astronomy.f,radiation_clouds.f,radiation_gases.f,radlw_param.f,radsw_param.f,surface_perturbation.F90
dependencies = radiation_astronomy.f,radiation_clouds.f,radiation_gases.f,radlw_param.f,radsw_param.f,surface_perturbation.F90,radiation_cloud_overlap.F90

########################################################################
[ccpp-arg-table]
Expand Down
27 changes: 12 additions & 15 deletions physics/GFS_rrtmg_setup.F90
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module GFS_rrtmg_setup
use physparam, only : isolar , ictmflg, ico2flg, ioznflg, iaerflg,&
! & iaermdl, laswflg, lalwflg, lavoflg, icldflg, &
& iaermdl, icldflg, &
& iovrsw , iovrlw , lcrick , lcnorm , lnoprec, &
& iovrRad=>iovr, lcrick , lcnorm , lnoprec, &
& ialbflg, iemsflg, isubcsw, isubclw, ivflip , ipsd0, &
& iswcliq, &
& kind_phys
Expand Down Expand Up @@ -45,7 +45,7 @@ module GFS_rrtmg_setup
!!
subroutine GFS_rrtmg_setup_init ( &
si, levr, ictm, isol, ico2, iaer, ialb, iems, ntcw, num_p2d, &
num_p3d, npdf3d, ntoz, iovr_sw, iovr_lw, isubc_sw, isubc_lw, &
num_p3d, npdf3d, ntoz, iovr, isubc_sw, isubc_lw, &
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why remove this generality?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@SMoorthi-emc It was decided that we didn't need this ability.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Does this meaning the sw and lw will always be called in same frequency?

Copy link
Collaborator

Choose a reason for hiding this comment

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

This switch is not about frequency, but about the choice of cloud overlap method. The change that the radiation groups (who was involved, @dustinswales ?) agreed on means that the same cloud overlap method is used for both LW and SW radiation. Makes a lot of sense to me, not sure how physical it would be to use different methods between them.

Copy link
Collaborator

Choose a reason for hiding this comment

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

This was discussed with @Qingfu-Liu @lisa-bengtsson @dustinswales @mjiacono Bao and Pincus in early October. The radiation developers recommended using the same cloud overlap for SW and LW because it is unphysical to assume otherwise. Also, @qingfu mentioned that the operational models at NCEP also use the same cloud overlap for SW and LW, so it was understood that the generality was not necessary.

icliq_sw, crick_proof, ccnorm, &
imp_physics, &
norad_precip, idate, iflip, &
Expand Down Expand Up @@ -131,7 +131,7 @@ subroutine GFS_rrtmg_setup_init ( &
! Stamnes(1993) \cite hu_and_stamnes_1993 method !
! =2:cloud optical property scheme based on Hu and !
! Stamnes(1993) -updated !
! iovr_sw/iovr_lw : control flag for cloud overlap (sw/lw rad) !
! iovr : control flag for cloud overlap (sw/lw rad) !
! =0: random overlapping clouds !
! =1: max/ran overlapping clouds !
! =2: maximum overlap clouds (mcica only) !
Expand Down Expand Up @@ -178,8 +178,7 @@ subroutine GFS_rrtmg_setup_init ( &
integer, intent(in) :: num_p3d
integer, intent(in) :: npdf3d
integer, intent(in) :: ntoz
integer, intent(in) :: iovr_sw
integer, intent(in) :: iovr_lw
integer, intent(in) :: iovr
integer, intent(in) :: isubc_sw
integer, intent(in) :: isubc_lw
integer, intent(in) :: icliq_sw
Expand Down Expand Up @@ -269,9 +268,10 @@ subroutine GFS_rrtmg_setup_init ( &

iswcliq = icliq_sw ! optical property for liquid clouds for sw

iovrsw = iovr_sw ! cloud overlapping control flag for sw
iovrlw = iovr_lw ! cloud overlapping control flag for lw

! iovr comes from the model. In the RRTMG implementation this is stored in phyrparam.f,
! it comes in from the host-model and is set here.
! In GP, iovr is passed directly into the routines.
iovrRAD = iovr
lcrick = crick_proof ! control flag for eliminating CRICK
lcnorm = ccnorm ! control flag for in-cld condensate
lnoprec = norad_precip ! precip effect on radiation flag (ferrier microphysics)
Expand All @@ -294,8 +294,8 @@ subroutine GFS_rrtmg_setup_init ( &
print *,' si =',si
print *,' levr=',levr,' ictm=',ictm,' isol=',isol,' ico2=',ico2,&
& ' iaer=',iaer,' ialb=',ialb,' iems=',iems,' ntcw=',ntcw
print *,' np3d=',num_p3d,' ntoz=',ntoz,' iovr_sw=',iovr_sw, &
& ' iovr_lw=',iovr_lw,' isubc_sw=',isubc_sw, &
print *,' np3d=',num_p3d,' ntoz=',ntoz, &
& ' iovr=',iovr,' isubc_sw=',isubc_sw, &
& ' isubc_lw=',isubc_lw,' icliq_sw=',icliq_sw, &
& ' iflip=',iflip,' me=',me
print *,' crick_proof=',crick_proof, &
Expand Down Expand Up @@ -468,8 +468,7 @@ subroutine radinit( si, NLAY, imp_physics, me )
! =8 Thompson microphysics scheme !
! =6 WSM6 microphysics scheme !
! =10 MG microphysics scheme !
! iovrsw : control flag for cloud overlap in sw radiation !
! iovrlw : control flag for cloud overlap in lw radiation !
! iovr : control flag for cloud overlap in radiation !
! =0: random overlapping clouds !
! =1: max/ran overlapping clouds !
! isubcsw : sub-column cloud approx control flag in sw radiation !
Expand Down Expand Up @@ -545,10 +544,8 @@ subroutine radinit( si, NLAY, imp_physics, me )
& ' ISOLar =',isolar, ' ICO2flg=',ico2flg,' IAERflg=',iaerflg, &
& ' IALBflg=',ialbflg,' IEMSflg=',iemsflg,' ICLDflg=',icldflg, &
& ' IMP_PHYSICS=',imp_physics,' IOZNflg=',ioznflg
print *,' IVFLIP=',ivflip,' IOVRSW=',iovrsw,' IOVRLW=',iovrlw, &
print *,' IVFLIP=',ivflip,' IOVR=',iovrRad, &
& ' ISUBCSW=',isubcsw,' ISUBCLW=',isubclw
! write(0,*)' IVFLIP=',ivflip,' IOVRSW=',iovrsw,' IOVRLW=',iovrlw,&
! & ' ISUBCSW=',isubcsw,' ISUBCLW=',isubclw
print *,' LCRICK=',lcrick,' LCNORM=',lcnorm,' LNOPREC=',lnoprec
print *,' LTP =',ltp,', add extra top layer =',lextop

Expand Down
14 changes: 3 additions & 11 deletions physics/GFS_rrtmg_setup.meta
Original file line number Diff line number Diff line change
Expand Up @@ -112,17 +112,9 @@
type = integer
intent = in
optional = F
[iovr_sw]
standard_name = flag_for_cloud_overlap_method_for_shortwave_radiation
long_name = sw: max-random overlap clouds
units = flag
dimensions = ()
type = integer
intent = in
optional = F
[iovr_lw]
standard_name = flag_for_cloud_overlap_method_for_longwave_radiation
long_name = lw: max-random overlap clouds
[iovr]
standard_name = flag_for_cloud_overlap_method_for_radiation
long_name = max-random overlap clouds
units = flag
dimensions = ()
type = integer
Expand Down
Loading