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

GFS physics: port SHiELD's progcld6 to radiation scheme #368

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from
Draft
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
64 changes: 42 additions & 22 deletions FV3/gfsphysics/GFS_layer/GFS_radiation_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ module module_radiation_driver !
& progcld1, progcld2, &
& progcld3, progcld4, &
& progcld5, progcld4o, &
& progclduni
& progclduni, progcld6

use module_radsw_parameters, only: topfsw_type, sfcfsw_type, &
& profsw_type,cmpfsw_type,NBDSW
Expand Down Expand Up @@ -1225,7 +1225,8 @@ subroutine GFS_radiation_driver &
real(kind=kind_phys), dimension(size(Grid%xlon,1),Model%levr+ltp) :: &
htswc, htlwc, gcice, grain, grime, htsw0, htlw0, plyr, tlyr, &
qlyr, olyr, rhly, tvly, qstl, prslk1, tem2da, &
dz,delp,cldcov, deltaq, cnvc, cnvw, effrl, effri, effrr, effrs
dz,delp,cldcov, deltaq, cnvc, cnvw, effrl, effri, effrr, effrs, &
qa

real(kind=kind_phys), dimension(size(Grid%xlon,1),Model%levr+ltp+1) :: plvl, tlvl
real(kind=kind_phys), dimension(size(Grid%xlon,1),Model%levr+ltp+1) :: tem2db
Expand Down Expand Up @@ -1781,27 +1782,46 @@ subroutine GFS_radiation_driver &

elseif (Model%imp_physics == 11) then ! GFDL cloud scheme

if (.not.Model%lgfdlmprad) then
call progcld4 (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, &! --- inputs
ccnd(1:IM,1:LMK,1), cnvw, cnvc, &
Grid%xlat, Grid%xlon, Sfcprop%slmsk, &
cldcov, dz, delp, im, lmk, lmp, &
clouds, cldsa, mtopa, mbota, de_lgth) ! --- outputs
if (Model%rad_progcld6) then ! port of SHiELD radiation's cloud scheme
if (Model%ntwa .gt. 0) then
qa(:,:) = tracer1(:,1:lmk,Model%ntwa)
else
qa(:,:) = tracer1(:,1:lmk,2) * 0.0
endif
call progcld6 (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, & ! --- inputs
cnvw, cnvc, Grid%xlat, &
tracer1(:,1:lmk,Model%ntcw), &
tracer1(:,1:lmk,Model%ntiw), &
tracer1(:,1:lmk,Model%ntrw), &
tracer1(:,1:lmk,Model%ntsw), &
tracer1(:,1:lmk,Model%ntgl), qa, &
Sfcprop%slmsk, Sfcprop%snowd, &
tracer1(:,1:lmk,Model%ntclamt), dz, delp, &
im, lmk, lmp, clouds, cldsa, mtopa, mbota, & ! --- outputs
de_lgth)
else

call progclduni (plyr, plvl, tlyr, tvly, ccnd, ncndl, &! --- inputs
Grid%xlat, Grid%xlon, Sfcprop%slmsk, dz,delp,&
IM, LMK, LMP, cldcov, &
effrl, effri, effrr, effrs, Model%effr_in, &
clouds, cldsa, mtopa, mbota, de_lgth) ! --- outputs
! call progcld4o (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, & ! --- inputs
! tracer1, Grid%xlat, Grid%xlon, Sfcprop%slmsk, &
! dz, delp, &
! ntrac-1, Model%ntcw-1,Model%ntiw-1,Model%ntrw-1,&
! Model%ntsw-1,Model%ntgl-1,Model%ntclamt-1, &
! im, lmk, lmp, &
! clouds, cldsa, mtopa, mbota, de_lgth) ! --- outputs
endif
if (.not.Model%lgfdlmprad) then
call progcld4 (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, &! --- inputs
ccnd(1:IM,1:LMK,1), cnvw, cnvc, &
Grid%xlat, Grid%xlon, Sfcprop%slmsk, &
cldcov, dz, delp, im, lmk, lmp, &
clouds, cldsa, mtopa, mbota, de_lgth) ! --- outputs
else

call progclduni (plyr, plvl, tlyr, tvly, ccnd, ncndl, &! --- inputs
Grid%xlat, Grid%xlon, Sfcprop%slmsk, dz, &
delp, IM, LMK, LMP, cldcov, &
effrl, effri, effrr, effrs, Model%effr_in,&
clouds, cldsa, mtopa, mbota, de_lgth) ! --- outputs
! call progcld4o (plyr, plvl, tlyr, tvly, qlyr, qstl, rhly, & ! --- inputs
! tracer1, Grid%xlat, Grid%xlon, Sfcprop%slmsk, &
! dz, delp, &
! ntrac-1, Model%ntcw-1,Model%ntiw-1,Model%ntrw-1,&
! Model%ntsw-1,Model%ntgl-1,Model%ntclamt-1, &
! im, lmk, lmp, &
! clouds, cldsa, mtopa, mbota, de_lgth) ! --- outputs
endif
endif

elseif(Model%imp_physics == 8 .or. Model%imp_physics == 6) then ! Thompson / WSM6 cloud micrphysics scheme

Expand Down
6 changes: 5 additions & 1 deletion FV3/gfsphysics/GFS_layer/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -676,6 +676,7 @@ module GFS_typedefs
logical :: lwhtr !< flag to output lw heating rate (Radtend%lwhc)
logical :: swhtr !< flag to output sw heating rate (Radtend%swhc)
logical :: do_only_clearsky_rad !< flag for whether to do only clear-sky radiation
logical :: rad_progcld6 !< flag for whether to do SHiELD radiation cloud routine

!--- microphysical switch
integer :: ncld !< choice of cloud scheme
Expand Down Expand Up @@ -2855,6 +2856,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
logical :: lwhtr = .true. !< flag to output lw heating rate (Radtend%lwhc)
logical :: swhtr = .true. !< flag to output sw heating rate (Radtend%swhc)
logical :: do_only_clearsky_rad = .false. !< flag for whether to do only clear-sky radiation
logical :: rad_progcld6 = .false. !< flag for whether to do SHiELD radiation cloud routine

!--- Z-C microphysical parameters
integer :: ncld = 1 !< choice of cloud scheme
Expand Down Expand Up @@ -3191,7 +3193,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
fhswr, fhlwr, levr, nfxr, aero_in, iflip, isol, ico2, ialb, &
isot, iems, iaer, icliq_sw, iovr_sw, iovr_lw, ictm, isubc_sw,&
isubc_lw, crick_proof, ccnorm, lwhtr, swhtr, &
do_only_clearsky_rad, &
do_only_clearsky_rad, rad_progcld6, &
! IN CCN forcing
iccn, &
!--- microphysical parameterizations
Expand Down Expand Up @@ -3440,6 +3442,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%lwhtr = lwhtr
Model%swhtr = swhtr
Model%do_only_clearsky_rad = do_only_clearsky_rad
Model%rad_progcld6 = rad_progcld6
#ifdef CCPP
! The CCPP versions of the RRTMG lw/sw schemes are configured
! such that lw and sw heating rate are output, i.e. they rely
Expand Down Expand Up @@ -4509,6 +4512,7 @@ subroutine control_print(Model)
print *, ' lwhtr : ', Model%lwhtr
print *, ' swhtr : ', Model%swhtr
print *, ' do_only_clearsky_rad: ', Model%do_only_clearsky_rad
print *, ' rad_progcld6: ', Model%rad_progcld6
print *, ' '
print *, 'microphysical switch'
print *, ' ncld : ', Model%ncld
Expand Down
Loading