Skip to content

Commit 9b0ac7b

Browse files
authored
Merge pull request NCAR#184 from lisa-bengtsson/cloudPR
Introduce namelist flag xr_cnvcld to control if suspended grid-mean convective cloud condensate should be included in cloud fraction and optical depth calculation in the GFS suite
2 parents 9839680 + 7fa5593 commit 9b0ac7b

File tree

3 files changed

+40
-11
lines changed

3 files changed

+40
-11
lines changed

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.F90

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ module GFS_rrtmg_pre
1919
!>\section rrtmg_pre_gen General Algorithm
2020
subroutine GFS_rrtmg_pre_run (im, levs, lm, lmk, lmp, n_var_lndp, lextop,&
2121
ltp, imfdeepcnv, imfdeepcnv_gf, imfdeepcnv_c3, me, ncnd, ntrac, &
22-
num_p3d, npdf3d, &
22+
num_p3d, npdf3d, xr_cnvcld, &
2323
ncnvcld3d,ntqv, ntcw,ntiw, ntlnc, ntinc, ntrnc, ntsnc, ntccn, top_at_1,&
2424
ntrw, ntsw, ntgl, nthl, ntwa, ntoz, ntsmoke, ntdust, ntcoarsepm, &
2525
ntclamt, nleffr, nieffr, nseffr, lndp_type, kdt, &
@@ -129,7 +129,7 @@ subroutine GFS_rrtmg_pre_run (im, levs, lm, lmk, lmp, n_var_lndp, lextop,&
129129
uni_cld, effr_in, do_mynnedmf, &
130130
lmfshal, lmfdeep2, pert_clds, lcrick,&
131131
lcnorm, top_at_1, lextop, mraerosol
132-
logical, intent(in) :: rrfs_sd, aero_dir_fdb
132+
logical, intent(in) :: rrfs_sd, aero_dir_fdb, xr_cnvcld
133133

134134
logical, intent(in) :: nssl_ccn_on, nssl_invertccn
135135
integer, intent(in) :: spp_rad
@@ -981,7 +981,7 @@ subroutine GFS_rrtmg_pre_run (im, levs, lm, lmk, lmp, n_var_lndp, lextop,&
981981
& iovr_dcorr, iovr_exp, iovr_exprand, idcor, idcor_con, &
982982
& idcor_hogan, idcor_oreopoulos, lcrick, lcnorm, &
983983
& imfdeepcnv, imfdeepcnv_gf, imfdeepcnv_c3, do_mynnedmf, &
984-
& lgfdlmprad, &
984+
& lgfdlmprad, xr_cnvcld, &
985985
& uni_cld, lmfshal, lmfdeep2, cldcov, clouds1, &
986986
& effrl, effri, effrr, effrs, effr_in, &
987987
& effrl_inout, effri_inout, effrs_inout, &

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_rrtmg_pre.meta

+7
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@
5656
dimensions = ()
5757
type = logical
5858
intent = in
59+
[xr_cnvcld]
60+
standard_name = flag_for_suspended_convective_clouds_in_Xu_Randall
61+
long_name = flag for using suspended convective clouds in Xu Randall
62+
units = flag
63+
dimensions = ()
64+
type = logical
65+
intent = in
5966
[ltp]
6067
standard_name = extra_top_layer
6168
long_name = extra top layer for radiation

physics/Radiation/radiation_clouds.f

+30-8
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ subroutine radiation_clouds_prop &
348348
& iovr_dcorr, iovr_exp, iovr_exprand, idcor, idcor_con, &
349349
& idcor_hogan, idcor_oreopoulos, lcrick, lcnorm, &
350350
& imfdeepcnv, imfdeepcnv_gf, imfdeepcnv_c3, &
351-
& do_mynnedmf, lgfdlmprad, &
351+
& do_mynnedmf, lgfdlmprad, xr_cnvcld, &
352352
& uni_cld, lmfshal, lmfdeep2, cldcov, clouds1, &
353353
& effrl, effri, effrr, effrs, effr_in, &
354354
& effrl_inout, effri_inout, effrs_inout, &
@@ -538,7 +538,8 @@ subroutine radiation_clouds_prop &
538538

539539

540540
logical, intent(in) :: uni_cld, lmfshal, lmfdeep2, effr_in, &
541-
& do_mynnedmf, lgfdlmprad, top_at_1, lcrick, lcnorm
541+
& do_mynnedmf, lgfdlmprad, top_at_1, lcrick, lcnorm, &
542+
& xr_cnvcld
542543

543544
real (kind=kind_phys), dimension(:,:,:), intent(in) :: ccnd, &
544545
& tracer1
@@ -727,7 +728,7 @@ subroutine radiation_clouds_prop &
727728
call progcld_thompson_wsm6 (plyr,plvl,tlyr,qlyr,qstl, & ! --- inputs
728729
& rhly,tracer1,xlat,xlon,slmsk,dz,delp, &
729730
& ntrac-1, ntcw-1,ntiw-1,ntrw-1, &
730-
& ntsw-1,ntgl-1,con_ttp, &
731+
& ntsw-1,ntgl-1,con_ttp,xr_cnvcld, &
731732
& IX, NLAY, NLP1, uni_cld, lmfshal, lmfdeep2, &
732733
& cldcov(:,1:NLAY), cnvw, effrl_inout, &
733734
& effri_inout, effrs_inout, &
@@ -801,7 +802,7 @@ subroutine radiation_clouds_prop &
801802
call progcld_thompson_wsm6 (plyr,plvl,tlyr,qlyr,qstl, & ! --- inputs
802803
& rhly,tracer1,xlat,xlon,slmsk,dz,delp, &
803804
& ntrac-1, ntcw-1,ntiw-1,ntrw-1, &
804-
& ntsw-1,ntgl-1,con_ttp, &
805+
& ntsw-1,ntgl-1,con_ttp,xr_cnvcld, &
805806
& IX, NLAY, NLP1, uni_cld, lmfshal, lmfdeep2, &
806807
& cldcov(:,1:NLAY), cnvw, effrl, effri, effrs, &
807808
& lwp_ex, iwp_ex, lwp_fc, iwp_fc, &
@@ -1964,7 +1965,7 @@ subroutine progcld_thompson_wsm6 &
19641965
& ( plyr,plvl,tlyr,qlyr,qstl,rhly,clw, & ! --- inputs:
19651966
& xlat,xlon,slmsk,dz,delp, &
19661967
& ntrac,ntcw,ntiw,ntrw,ntsw,ntgl,con_ttp, &
1967-
& IX, NLAY, NLP1, &
1968+
& xr_cnvcld, IX, NLAY, NLP1, &
19681969
& uni_cld, lmfshal, lmfdeep2, cldcov, cnvw, &
19691970
& re_cloud,re_ice,re_snow, &
19701971
& lwp_ex, iwp_ex, lwp_fc, iwp_fc, &
@@ -2051,7 +2052,8 @@ subroutine progcld_thompson_wsm6 &
20512052
integer, intent(in) :: IX, NLAY, NLP1
20522053
integer, intent(in) :: ntrac, ntcw, ntiw, ntrw, ntsw, ntgl
20532054
2054-
logical, intent(in) :: uni_cld, lmfshal, lmfdeep2, lcnorm
2055+
logical, intent(in) :: uni_cld, lmfshal, lmfdeep2, lcnorm, &
2056+
& xr_cnvcld
20552057
20562058
real (kind=kind_phys), dimension(:,:), intent(in) :: plvl, plyr, &
20572059
& tlyr, qlyr, qstl, rhly, cldcov, delp, dz, dzlay, &
@@ -2122,23 +2124,43 @@ subroutine progcld_thompson_wsm6 &
21222124
! enddo
21232125
! endif
21242126
2127+
!> - Include grid-mean suspended cloud condensate in Xu-Randall cloud fraction
2128+
!> if xr_cnvcld is true:
2129+
2130+
if(xr_cnvcld)then
21252131
do k = 1, NLAY
21262132
do i = 1, IX
21272133
clwf(i,k) = clw(i,k,ntcw) + clw(i,k,ntiw) + clw(i,k,ntsw)
21282134
& + clw(i,k,ntrw) + cnvw(i,k)
21292135
enddo
21302136
enddo
2137+
else
2138+
do k = 1, NLAY
2139+
do i = 1, IX
2140+
clwf(i,k) = clw(i,k,ntcw) + clw(i,k,ntiw) + clw(i,k,ntsw)
2141+
& + clw(i,k,ntrw)
2142+
enddo
2143+
enddo
2144+
endif
21312145
21322146
!> - Compute total-cloud liquid/ice condensate path in \f$ g/m^2 \f$.
21332147
!> The total condensate includes convective condensate.
21342148
do k = 1, NLAY-1
21352149
do i = 1, IX
2136-
tem1 = cnvw(i,k)*(1.-tem2d(i,k))
2150+
if(xr_cnvcld)then
2151+
tem1 = cnvw(i,k)*(1.-tem2d(i,k))
2152+
else
2153+
tem1 = 0.
2154+
endif
21372155
cwp(i,k) = max(0.0, (clw(i,k,ntcw)+tem1) *
21382156
& gfac * delp(i,k))
21392157
if(tem1 > 1.e-12 .and. clw(i,k,ntcw) < 1.e-12)
21402158
& rew(i,k)=reliq_def
2141-
tem2 = cnvw(i,k)*tem2d(i,k)
2159+
if(xr_cnvcld)then
2160+
tem2 = cnvw(i,k)*tem2d(i,k)
2161+
else
2162+
tem2 = 0.
2163+
endif
21422164
cip(i,k) = max(0.0, (clw(i,k,ntiw) +
21432165
& snow2ice*clw(i,k,ntsw) + tem2) *
21442166
& gfac * delp(i,k))

0 commit comments

Comments
 (0)