Skip to content

Commit a2aa6cc

Browse files
authored
Merge pull request #1195 from scrasmussen/ufs-dev-332
ufs-dev 332
2 parents f4c82f6 + 941cfd2 commit a2aa6cc

File tree

12 files changed

+90
-22
lines changed

12 files changed

+90
-22
lines changed

CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
# Default codeowners for files that don't have specific owners:
66

7-
* @grantfirl @rhaesung @Qingfu-Liu @dustinswales @mzhangw
7+
* @grantfirl @rhaesung @Qingfu-Liu @dustinswales @mzhangw @climbfuji
88

99

1010
# The following lines are from the CCPP Primary Schemes Points of Contact

physics/CONV/SAMF/samfdeepcnv.f

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
8585
& clam,c0s,c1,betal,betas,evef,pgcon,asolfac,cscale, &
8686
& do_ca, ca_closure, ca_entr, ca_trigger, nthresh,ca_deep, &
8787
& rainevap,sigmain,sigmaout,omegain,omegaout,betadcu,betamcu, &
88-
& betascu,maxMF,do_mynnedmf,sigmab_coldstart,errmsg,errflg)
88+
& betascu,maxMF,do_mynnedmf,sigmab_coldstart,cat_adj_deep, &
89+
& errmsg,errflg)
8990

9091
!
9192
use machine , only : kind_phys
@@ -137,6 +138,7 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
137138
real(kind=kind_phys), intent(in) :: clam, c0s, c1, &
138139
& betal, betas, asolfac, &
139140
& evef, pgcon
141+
real(kind_phys), intent(in) :: cat_adj_deep
140142
character(len=*), intent(out) :: errmsg
141143
integer, intent(out) :: errflg
142144
!
@@ -2952,7 +2954,7 @@ subroutine samfdeepcnv_run (im,km,first_time_step,restart, &
29522954
umean(i) = max(umean(i), 1.)
29532955
tauadv = gdx(i) / umean(i)
29542956
advfac(i) = tauadv / dtconv(i)
2955-
advfac(i) = min(advfac(i), 1.)
2957+
advfac(i) = min(cat_adj_deep*advfac(i), 1.)
29562958
endif
29572959
enddo
29582960

physics/CONV/SAMF/samfdeepcnv.meta

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,14 @@
762762
type = real
763763
kind = kind_phys
764764
intent = out
765+
[cat_adj_deep]
766+
standard_name = adjustment_for_convective_advection_time_for_deep
767+
long_name = adjustment for convective advection time for deep
768+
units = none
769+
dimensions = ()
770+
type = real
771+
kind = kind_phys
772+
intent = in
765773
[errmsg]
766774
standard_name = ccpp_error_message
767775
long_name = error message for error handling in CCPP

physics/CONV/SAMF/samfshalcnv.f

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
5959
& dot,ncloud,hpbl,ud_mf,dt_mf,cnvw,cnvc, &
6060
& clam,c0s,c1,evef,pgcon,asolfac,hwrf_samfshal, &
6161
& sigmain,sigmaout,omegain,omegaout,betadcu,betamcu,betascu, &
62-
& errmsg,errflg)
62+
& cat_adj_shal,errmsg,errflg)
6363
!
6464
use machine , only : kind_phys
6565
use funcphys , only : fpvs
@@ -98,8 +98,10 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
9898
& asolfac, evef, pgcon
9999
logical, intent(in) :: hwrf_samfshal,first_time_step, &
100100
& restart,progsigma,progomega
101+
real(kind_phys), intent(in) :: cat_adj_shal
101102
character(len=*), intent(out) :: errmsg
102103
integer, intent(out) :: errflg
104+
103105
!
104106
! local variables
105107
integer i,j,indx, k, kk, km1, n
@@ -1992,7 +1994,7 @@ subroutine samfshalcnv_run(im,km,itc,ntc,cliq,cp,cvap, &
19921994
umean(i) = max(umean(i), 1.)
19931995
tauadv = gdx(i) / umean(i)
19941996
advfac(i) = tauadv / dtconv(i)
1995-
advfac(i) = min(advfac(i), 1.)
1997+
advfac(i) = min(cat_adj_shal*advfac(i), 1.)
19961998
endif
19971999
enddo
19982000
c

physics/CONV/SAMF/samfshalcnv.meta

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,14 @@
550550
dimensions = ()
551551
type = real
552552
intent = in
553+
[cat_adj_shal]
554+
standard_name = adjustment_for_convective_advection_time_for_shallow
555+
long_name = adjustment for convective advection time for shallow
556+
units = none
557+
dimensions = ()
558+
type = real
559+
kind = kind_phys
560+
intent = in
553561
[errmsg]
554562
standard_name = ccpp_error_message
555563
long_name = error message for error handling in CCPP

physics/MP/Thompson/module_mp_thompson.F90

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,8 @@ subroutine mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, &
10431043
tprr_rcs, tprv_rev, tten3, qvten3, &
10441044
qrten3, qsten3, qgten3, qiten3, niten3, &
10451045
nrten3, ncten3, qcten3, &
1046-
pfils, pflls)
1046+
pfils, pflls, &
1047+
fs_fac_rain, fs_fac_snow)
10471048

10481049
implicit none
10491050

@@ -1112,6 +1113,8 @@ subroutine mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, &
11121113
tprr_rcs, tprv_rev, tten3, qvten3, &
11131114
qrten3, qsten3, qgten3, qiten3, niten3, &
11141115
nrten3, ncten3, qcten3
1116+
! Fall speed adjustment
1117+
real(wp), INTENT (IN), optional :: fs_fac_rain, fs_fac_snow
11151118

11161119
!..Local variables
11171120
real(wp), dimension(kts:kte):: &
@@ -1481,7 +1484,8 @@ subroutine mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, &
14811484
tprr_rcs1, tprv_rev1, &
14821485
tten1, qvten1, qrten1, qsten1, &
14831486
qgten1, qiten1, niten1, nrten1, ncten1, qcten1, &
1484-
pfil1, pfll1)
1487+
pfil1, pfll1, &
1488+
fs_fac_rain, fs_fac_snow)
14851489

14861490
pcp_ra(i,j) = pcp_ra(i,j) + pptrain
14871491
pcp_sn(i,j) = pcp_sn(i,j) + pptsnow
@@ -1901,7 +1905,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
19011905
tprr_rcs1, tprv_rev1, &
19021906
tten1, qvten1, qrten1, qsten1, &
19031907
qgten1, qiten1, niten1, nrten1, ncten1, qcten1, &
1904-
pfil1, pfll1)
1908+
pfil1, pfll1, &
1909+
fs_fac_rain, fs_fac_snow)
19051910

19061911
use mpi_f08
19071912

@@ -1937,6 +1942,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
19371942
tprr_rcs1, tprv_rev1, tten1, qvten1, &
19381943
qrten1, qsten1, qgten1, qiten1, niten1, &
19391944
nrten1, ncten1, qcten1
1945+
! Fall speed adjustment
1946+
real(wp), intent(in), optional :: fs_fac_rain, fs_fac_snow
19401947

19411948
#if ( WRF_CHEM == 1 )
19421949
real(wp), dimension(kts:kte), intent(inout) :: &
@@ -2031,6 +2038,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
20312038
logical :: debug_flag
20322039
integer :: nu_c
20332040

2041+
real(wp) :: fallspeed_adjustment_factor
20342042
!+---+
20352043

20362044
debug_flag = .false.
@@ -3769,6 +3777,9 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
37693777
enddo
37703778

37713779
if (ANY(L_qr .eqv. .true.)) then
3780+
fallspeed_adjustment_factor=1.0
3781+
if ( present(fs_fac_rain) ) fallspeed_adjustment_factor=fs_fac_rain
3782+
37723783
do k = kte, kts, -1
37733784
vtr = 0.
37743785
rhof(k) = SQRT(RHO_NOT/rho(k))
@@ -3777,15 +3788,15 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
37773788
lamr = (am_r*crg(3)*org2*nr(k)/rr(k))**obmr
37783789
vtr = rhof(k)*av_r*crg(6)*org3 * lamr**cre(3) &
37793790
*((lamr+fv_r)**(-cre(6)))
3780-
vtrk(k) = vtr
3791+
vtrk(k) = vtr*fallspeed_adjustment_factor
37813792
! First below is technically correct:
37823793
! vtr = rhof(k)*av_r*crg(5)*org2 * lamr**cre(2) &
37833794
! *((lamr+fv_r)**(-cre(5)))
37843795
! Test: make number fall faster (but still slower than mass)
37853796
! Goal: less prominent size sorting
37863797
vtr = rhof(k)*av_r*crg(7)/crg(12) * lamr**cre(12) &
37873798
*((lamr+fv_r)**(-cre(7)))
3788-
vtnrk(k) = vtr
3799+
vtnrk(k) = vtr*fallspeed_adjustment_factor
37893800
else
37903801
vtrk(k) = vtrk(k+1)
37913802
vtnrk(k) = vtnrk(k+1)
@@ -3869,6 +3880,9 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
38693880
!+---+-----------------------------------------------------------------+
38703881

38713882
if (ANY(L_qs .eqv. .true.)) then
3883+
fallspeed_adjustment_factor=1.0
3884+
if ( present(fs_fac_snow) ) fallspeed_adjustment_factor=fs_fac_snow
3885+
38723886
nstep = 0
38733887
do k = kte, kts, -1
38743888
vts = 0.
@@ -3886,6 +3900,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, &
38863900
t3_vts = Kap0*csg(1)*ils1**cse(1)
38873901
t4_vts = Kap1*Mrat**mu_s*csg(7)*ils2**cse(7)
38883902
vts = rhof(k)*av_s * (t1_vts+t2_vts)/(t3_vts+t4_vts)
3903+
vts=vts*fallspeed_adjustment_factor
38893904
if (prr_sml(k) .gt. 0.0) then
38903905
! vtsk(k) = max(vts*vts_boost(k), &
38913906
! & vts*((vtrk(k)-vts*vts_boost(k))/(temp(k)-T_0)))

physics/MP/Thompson/mp_thompson.F90

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, &
383383
spp_prt_list, spp_var_list, &
384384
spp_stddev_cutoff, &
385385
cplchm, pfi_lsan, pfl_lsan, &
386+
fs_fac_rain, fs_fac_snow, &
386387
is_initialized, errmsg, errflg)
387388

388389
implicit none
@@ -465,6 +466,9 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, &
465466
real(kind=kind_phys), intent(inout), dimension(:,:), optional :: pfi_lsan
466467
real(kind=kind_phys), intent(inout), dimension(:,:), optional :: pfl_lsan
467468

469+
! fall speed adjustment
470+
real(kind_phys), intent(in), optional :: fs_fac_rain, fs_fac_snow
471+
468472
! Local variables
469473

470474
! Reduced time step if subcycling is used
@@ -776,7 +780,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, &
776780
tprv_rev=tprv_rev, tten3=tten3, &
777781
qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, &
778782
qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, &
779-
qcten3=qcten3, pfils=pfils, pflls=pflls)
783+
qcten3=qcten3, pfils=pfils, pflls=pflls, &
784+
fs_fac_rain=fs_fac_rain, fs_fac_snow=fs_fac_snow)
780785
else if (merra2_aerosol_aware) then
781786
call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, &
782787
nc=nc, nwfa=nwfa, nifa=nifa, &
@@ -818,7 +823,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, &
818823
tprv_rev=tprv_rev, tten3=tten3, &
819824
qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, &
820825
qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, &
821-
qcten3=qcten3, pfils=pfils, pflls=pflls)
826+
qcten3=qcten3, pfils=pfils, pflls=pflls, &
827+
fs_fac_rain=fs_fac_rain, fs_fac_snow=fs_fac_snow)
822828
else
823829
call mp_gt_driver(qv=qv, qc=qc, qr=qr, qi=qi, qs=qs, qg=qg, ni=ni, nr=nr, &
824830
tt=tgrs, p=prsl, w=w, dz=dz, dt_in=dtstep, dt_inner=dt_inner, &
@@ -858,7 +864,8 @@ subroutine mp_thompson_run(ncol, nlev, con_g, con_rd, &
858864
tprv_rev=tprv_rev, tten3=tten3, &
859865
qvten3=qvten3, qrten3=qrten3, qsten3=qsten3, qgten3=qgten3, &
860866
qiten3=qiten3, niten3=niten3, nrten3=nrten3, ncten3=ncten3, &
861-
qcten3=qcten3, pfils=pfils, pflls=pflls)
867+
qcten3=qcten3, pfils=pfils, pflls=pflls, &
868+
fs_fac_rain=fs_fac_rain, fs_fac_snow=fs_fac_snow)
862869
end if
863870
if (errflg/=0) return
864871

physics/MP/Thompson/mp_thompson.meta

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,24 @@
943943
dimensions = ()
944944
type = logical
945945
intent = inout
946+
[fs_fac_rain]
947+
standard_name = multiplicative_tuning_parameter_for_rain_fall_speed
948+
long_name = multiplicative tuning parameter for rain fall speed
949+
units = none
950+
dimensions = ()
951+
type = real
952+
kind = kind_phys
953+
intent = in
954+
optional = True
955+
[fs_fac_snow]
956+
standard_name = multiplicative_tuning_parameter_for_snow_fall_speed
957+
long_name = multiplicative tuning parameter_for snow fall speed
958+
units = none
959+
dimensions = ()
960+
type = real
961+
kind = kind_phys
962+
intent = in
963+
optional = True
946964
[errmsg]
947965
standard_name = ccpp_error_message
948966
long_name = error message for error handling in CCPP

physics/Radiation/RRTMGP/rrtmgp_lw_cloud_optics.F90

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ module rrtmgp_lw_cloud_optics
4848
! ######################################################################################
4949
!>
5050
subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds, &
51-
nrghice, mpicomm, mpirank, mpiroot, errmsg, errflg)
51+
nrghice, mpicomm, mpirank, mpiroot1, errmsg, errflg)
5252

5353
! Inputs
5454
character(len=128),intent(in) :: &
@@ -61,7 +61,8 @@ subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds,
6161
mpicomm !< MPI communicator
6262
integer, intent(in) :: &
6363
mpirank, & !< Current MPI rank
64-
mpiroot !< Master MPI rank
64+
mpiroot1 !< Master MPI rank
65+
integer :: mpiroot
6566

6667
! Outputs
6768
character(len=*), intent(out) :: &
@@ -77,6 +78,7 @@ subroutine rrtmgp_lw_cloud_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_clouds,
7778
errmsg = ''
7879
errflg = 0
7980

81+
mpiroot = 0
8082
! Filenames are set in the physics_nml
8183
lw_cloud_props_file = trim(rrtmgp_root_dir)//trim(rrtmgp_lw_file_clouds)
8284

physics/Radiation/RRTMGP/rrtmgp_lw_gas_optics.F90

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ module rrtmgp_lw_gas_optics
7272

7373
!>
7474
subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas, &
75-
active_gases_array, mpicomm, mpirank, mpiroot, errmsg, errflg)
75+
active_gases_array, mpicomm, mpirank, mpiroot1, errmsg, errflg)
7676

7777
! Inputs
7878
character(len=128),intent(in) :: &
@@ -84,8 +84,9 @@ subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas,
8484
mpicomm !< MPI communicator
8585
integer,intent(in) :: &
8686
mpirank, & !< Current MPI rank
87-
mpiroot !< Master MPI rank
88-
87+
mpiroot1 !< Master MPI rank
88+
integer :: mpiroot
89+
8990
! Outputs
9091
character(len=*), intent(out) :: &
9192
errmsg !< CCPP error message
@@ -102,6 +103,7 @@ subroutine rrtmgp_lw_gas_optics_init(rrtmgp_root_dir, rrtmgp_lw_file_gas,
102103
errmsg = ''
103104
errflg = 0
104105

106+
mpiroot = 0
105107
! Filenames are set in the physics_nml
106108
lw_gas_props_file = trim(rrtmgp_root_dir)//trim(rrtmgp_lw_file_gas)
107109

0 commit comments

Comments
 (0)