Skip to content

Commit c1daced

Browse files
Merge pull request #86 from ufs-community/ufs/dev
sync with the ufs/dev
2 parents 455eb7e + d52832b commit c1daced

File tree

397 files changed

+7492
-5610
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

397 files changed

+7492
-5610
lines changed

.gitmodules

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
[submodule "physics/rte-rrtmgp"]
2-
path = physics/rte-rrtmgp
2+
path = physics/Radiation/RRTMGP/rte-rrtmgp
33
url = https://github.com/earth-system-radiation/rte-rrtmgp
44
branch = main
5+
[submodule "physics/Radiation/RRTMGP/rte-rrtmgp"]
6+
path = physics/Radiation/RRTMGP/rte-rrtmgp
7+
url = https://github.com/earth-system-radiation/rte-rrtmgp

CMakeLists.txt

+27-27
Original file line numberDiff line numberDiff line change
@@ -79,37 +79,37 @@ get_filename_component(LOCAL_CURRENT_SOURCE_DIR ${FULL_PATH_TO_CMAKELISTS} DIREC
7979
#------------------------------------------------------------------------------
8080

8181
# List of files that need to be compiled without OpenMP
82-
set(SCHEMES_OPENMP_OFF ${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rrtmgp/mo_gas_optics.F90
83-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rrtmgp/mo_rrtmgp_constants.F90
84-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90
85-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rrtmgp/mo_rrtmgp_util_string.F90
86-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rrtmgp/kernels/mo_gas_optics_kernels.F90
87-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90
88-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/extensions/mo_rrtmgp_clr_all_sky.F90
89-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/extensions/mo_fluxes_byband.F90
90-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/extensions/solar_variability/mo_solar_variability.F90
91-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/extensions/mo_heating_rates.F90
92-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/extensions/mo_fluxes_bygpoint.F90
93-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/extensions/mo_compute_bc.F90
94-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/extensions/cloud_optics/mo_cloud_sampling.F90
95-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90
96-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/mo_rte_config.F90
97-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/mo_source_functions.F90
98-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/mo_rte_sw.F90
99-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/mo_fluxes.F90
100-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/mo_rte_lw.F90
101-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/mo_rte_util_array.F90
102-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/kernels/mo_rte_solver_kernels.F90
103-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/kernels/mo_optical_props_kernels.F90
104-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/kernels/mo_fluxes_broadband_kernels.F90
105-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/mo_rte_kind.F90
106-
${LOCAL_CURRENT_SOURCE_DIR}/physics/rte-rrtmgp/rte/mo_optical_props.F90)
82+
set(SCHEMES_OPENMP_OFF ${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_gas_optics.F90
83+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_rrtmgp_constants.F90
84+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90
85+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_rrtmgp_util_string.F90
86+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/kernels/mo_gas_optics_kernels.F90
87+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90
88+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_rrtmgp_clr_all_sky.F90
89+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_fluxes_byband.F90
90+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/solar_variability/mo_solar_variability.F90
91+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_heating_rates.F90
92+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_fluxes_bygpoint.F90
93+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/mo_compute_bc.F90
94+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/cloud_optics/mo_cloud_sampling.F90
95+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90
96+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_config.F90
97+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_source_functions.F90
98+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_sw.F90
99+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_fluxes.F90
100+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_lw.F90
101+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_util_array.F90
102+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/kernels/mo_rte_solver_kernels.F90
103+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/kernels/mo_optical_props_kernels.F90
104+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/kernels/mo_fluxes_broadband_kernels.F90
105+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_rte_kind.F90
106+
${LOCAL_CURRENT_SOURCE_DIR}/physics/Radiation/RRTMGP/rte-rrtmgp/rte/mo_optical_props.F90)
107107

108108
# List of files that need to be compiled with different precision
109109
set(SCHEMES_DYNAMICS)
110110

111-
if(${LOCAL_CURRENT_SOURCE_DIR}/physics/fv_sat_adj.F90 IN_LIST SCHEMES)
112-
list(APPEND SCHEMES_DYNAMICS ${LOCAL_CURRENT_SOURCE_DIR}/physics/fv_sat_adj.F90)
111+
if(${LOCAL_CURRENT_SOURCE_DIR}/physics/MP/GFDL/fv_sat_adj.F90 IN_LIST SCHEMES)
112+
list(APPEND SCHEMES_DYNAMICS ${LOCAL_CURRENT_SOURCE_DIR}/physics/MP/GFDL/fv_sat_adj.F90)
113113
endif()
114114

115115
# Remove files that need to be compiled with different precision

CODEOWNERS

+2
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ physics/ysuvdif.* @Qingfu-Liu @WeiguoWang-NOAA
196196
physics/zhaocarr_gscond.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales
197197
physics/zhaocarr_precpd.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales
198198

199+
physics/sfc_land.* @uturuncoglu @barlage
200+
199201
########################################################################
200202

201203
# Lines starting with '#' are comments.

physics/cu_c3_deep.F90 renamed to physics/CONV/C3/cu_c3_deep.F90

+17-7
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ subroutine cu_c3_deep_run( &
9797
,tmf & ! instantanious tendency from turbulence
9898
,qmicro & ! instantanious tendency from microphysics
9999
,forceqv_spechum & !instantanious tendency from dynamics
100+
,betascu & ! Tuning parameter for shallow clouds
101+
,betamcu & ! Tuning parameter for mid-level clouds
102+
,betadcu & ! Tuning parameter for deep clouds
100103
,sigmain & ! input area fraction after advection
101104
,sigmaout & ! updated prognostic area fraction
102105
,z1 & ! terrain
@@ -233,8 +236,8 @@ subroutine cu_c3_deep_run( &
233236

234237

235238
real(kind=kind_phys) &
236-
,intent (in ) :: &
237-
dtime,ccnclean,fv,r_d
239+
,intent (in ) :: &
240+
dtime,ccnclean,fv,r_d,betascu,betamcu,betadcu
238241

239242

240243
!
@@ -386,13 +389,16 @@ subroutine cu_c3_deep_run( &
386389
real(kind=kind_phys), dimension (its:ite) :: pefc
387390
real(kind=kind_phys) entdo,dp,subin,detdo,entup, &
388391
detup,subdown,entdoj,entupk,detupk,totmas
392+
real(kind=kind_phys) :: &
393+
sigmind,sigminm,sigmins
394+
parameter(sigmind=0.005,sigmins=0.03,sigminm=0.01)
389395

390396
real(kind=kind_phys), dimension (its:ite) :: lambau,flux_tun,zws,ztexec,zqexec
391397
!$acc declare create(lambau,flux_tun,zws,ztexec,zqexec)
392398

393399
integer :: jprnt,jmini,start_k22
394400
logical :: keep_going,flg(its:ite),cnvflg(its:ite)
395-
logical :: flag_shallow
401+
logical :: flag_shallow,flag_mid
396402

397403
!$acc declare create(flg)
398404

@@ -1988,7 +1994,11 @@ subroutine cu_c3_deep_run( &
19881994
! equation 8, call progsigma_calc() to compute updraft area fraction based on a moisture budget
19891995

19901996
if(progsigma)then
1997+
flag_mid = .false.
19911998
flag_shallow = .false.
1999+
if(imid.eq.1)then
2000+
flag_mid = .true.
2001+
endif
19922002
do k=kts,ktf
19932003
do i=its,itf
19942004
del(i,k) = delp(i,k)*0.001
@@ -2003,9 +2013,9 @@ subroutine cu_c3_deep_run( &
20032013
endif
20042014
enddo
20052015
call progsigma_calc(itf,ktf,flag_init,flag_restart,flag_shallow, &
2006-
del,tmf,qmicro,dbyo1,zdqca,omega_u,zeta,xlv,dtime, &
2007-
forceqv_spechum,kbcon,ktop,cnvflg, &
2008-
sigmain,sigmaout,sigmab)
2016+
flag_mid,del,tmf,qmicro,dbyo1,zdqca,omega_u,zeta,xlv,dtime, &
2017+
forceqv_spechum,kbcon,ktop,cnvflg,betascu,betamcu,betadcu, &
2018+
sigmind,sigminm,sigmins,sigmain,sigmaout,sigmab)
20092019
endif
20102020

20112021
!$acc end kernels
@@ -3147,7 +3157,7 @@ subroutine cup_forcing_ens_3d(closure_n,xland,aa0,aa1,xaa0,mbdt,dtime,ierr,ierr2
31473157
! pcrit,acrit,acritt
31483158
integer, dimension (its:ite) :: kloc
31493159
real(kind=kind_phys) :: &
3150-
a1,a_ave,xff0,xomg,gravinv!,aclim1,aclim2,aclim3,aclim4
3160+
a1,a_ave,xff0,xomg,gravinv
31513161

31523162
real(kind=kind_phys), dimension (its:ite) :: ens_adj
31533163
!$acc declare create(kloc,ens_adj)

physics/cu_c3_driver.F90 renamed to physics/CONV/C3/cu_c3_driver.F90

+25-7
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,31 @@ module cu_c3_driver
3030
!! \htmlinclude cu_c3_driver_init.html
3131
!!
3232
subroutine cu_c3_driver_init(imfshalcnv, imfshalcnv_c3, imfdeepcnv, &
33-
imfdeepcnv_c3,mpirank, mpiroot, errmsg, errflg)
33+
imfdeepcnv_c3,progsigma, cnx, mpirank, mpiroot, &
34+
errmsg, errflg)
3435

3536
implicit none
3637

3738
integer, intent(in) :: imfshalcnv, imfshalcnv_c3
3839
integer, intent(in) :: imfdeepcnv, imfdeepcnv_c3
3940
integer, intent(in) :: mpirank
4041
integer, intent(in) :: mpiroot
42+
integer, intent(in) :: cnx
43+
logical, intent(inout) :: progsigma
4144
character(len=*), intent( out) :: errmsg
4245
integer, intent( out) :: errflg
4346

4447
! initialize ccpp error handling variables
4548
errmsg = ''
4649
errflg = 0
4750

51+
if(progsigma)then
52+
if(cnx < 384)then
53+
progsigma=.false.
54+
write(*,*)'Forcing prognostic closure to .false. due to coarse resolution'
55+
endif
56+
endif
57+
4858
end subroutine cu_c3_driver_init
4959

5060
!
@@ -60,7 +70,8 @@ end subroutine cu_c3_driver_init
6070
subroutine cu_c3_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,&
6171
do_ca,progsigma,cactiv,cactiv_m,g,cp,fv,r_d,xlv,r_v,forcet, &
6272
forceqv_spechum,phil,delp,raincv,tmf,qmicro,sigmain, &
63-
qv_spechum,t,cld1d,us,vs,t2di,w,qv2di_spechum,p2di,psuri, &
73+
betascu,betamcu,betadcu,qv_spechum,t,cld1d,us,vs,t2di,w, &
74+
qv2di_spechum,p2di,psuri, &
6475
hbot,htop,kcnv,xland,hfx2,qfx2,aod_gf,cliw,clcw,ca_deep,rainevap,&
6576
pbl,ud_mf,dd_mf,dt_mf,cnvw_moist,cnvc,imfshalcnv, &
6677
flag_for_scnv_generic_tend,flag_for_dcnv_generic_tend, &
@@ -96,10 +107,10 @@ subroutine cu_c3_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,&
96107
integer, intent(in ) :: ichoice_in,ichoicem_in,ichoice_s_in
97108
logical, intent(in ) :: flag_init, flag_restart, do_mynnedmf
98109
logical, intent(in ) :: flag_for_scnv_generic_tend,flag_for_dcnv_generic_tend, &
99-
do_ca,progsigma
100-
real (kind=kind_phys), intent(in) :: g,cp,fv,r_d,xlv,r_v
110+
do_ca
111+
real (kind=kind_phys), intent(in) :: g,cp,fv,r_d,xlv,r_v,betascu,betamcu,betadcu
101112
logical, intent(in ) :: ldiag3d
102-
113+
logical, intent(in ) :: progsigma
103114
real(kind=kind_phys), intent(inout) :: dtend(:,:,:)
104115
!$acc declare copy(dtend)
105116
integer, intent(in) :: dtidx(:,:), &
@@ -587,7 +598,7 @@ subroutine cu_c3_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,&
587598
hfx(i)=hfx2(i)*cp*rhoi(i,1)
588599
qfx(i)=qfx2(i)*xlv*rhoi(i,1)
589600
dx(i) = sqrt(garea(i))
590-
enddo
601+
enddo
591602

592603
do i=its,itf
593604
do k=kts,kpbli(i)
@@ -669,7 +680,8 @@ subroutine cu_c3_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,&
669680
zus,xmbs,kbcons,ktops,k22s,ierrs,ierrcs, &
670681
! Prog closure
671682
flag_init, flag_restart,fv,r_d,delp,tmfq,qmicro, &
672-
forceqv_spechum,sigmain,sigmaout,progsigma,dx, &
683+
forceqv_spechum,betascu,betamcu,betadcu,sigmain, &
684+
sigmaout,progsigma,dx, &
673685
! output tendencies
674686
outts,outqs,outqcs,outus,outvs,cnvwt,prets,cupclws, &
675687
! dimesnional variables
@@ -714,6 +726,9 @@ subroutine cu_c3_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,&
714726
,tmfq &
715727
,qmicro &
716728
,forceqv_spechum &
729+
,betascu &
730+
,betamcu &
731+
,betadcu &
717732
,sigmain &
718733
,sigmaout &
719734
,ter11 &
@@ -805,6 +820,9 @@ subroutine cu_c3_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,&
805820
,tmfq &
806821
,qmicro &
807822
,forceqv_spechum &
823+
,betascu &
824+
,betamcu &
825+
,betadcu &
808826
,sigmain &
809827
,sigmaout &
810828
,ter11 &

physics/cu_c3_driver.meta renamed to physics/CONV/C3/cu_c3_driver.meta

+39-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
[ccpp-table-properties]
22
name = cu_c3_driver
33
type = scheme
4-
dependencies = cu_c3_deep.F90,cu_c3_sh.F90,machine.F,physcons.F90,progsigma_calc.f90
4+
dependencies = ../../hooks/machine.F
5+
dependencies = cu_c3_deep.F90,cu_c3_sh.F90,../progsigma_calc.f90
56

67
########################################################################
78
[ccpp-arg-table]
@@ -49,6 +50,20 @@
4950
dimensions = ()
5051
type = integer
5152
intent = in
53+
[progsigma]
54+
standard_name = do_prognostic_updraft_area_fraction
55+
long_name = flag for prognostic sigma in cumuls scheme
56+
units = flag
57+
dimensions = ()
58+
type = logical
59+
intent = inout
60+
[cnx]
61+
standard_name = number_of_x_points_for_current_cubed_sphere_tile
62+
long_name = number of points in x direction for this cubed sphere face
63+
units = count
64+
dimensions = ()
65+
type = integer
66+
intent = in
5267
[errmsg]
5368
standard_name = ccpp_error_message
5469
long_name = error message for error handling in CCPP
@@ -244,6 +259,29 @@
244259
type = real
245260
kind = kind_phys
246261
intent = out
262+
[betascu]
263+
standard_name = tuning_param_for_shallow_cu
264+
long_name = tuning param for shallow cu in case prognostic closure is used
265+
units = none
266+
dimensions = ()
267+
type = real
268+
kind = kind_phys
269+
intent = in
270+
[betamcu]
271+
standard_name = tuning_param_for_midlevel_cu
272+
long_name = tuning param for midlevel cu in case prognostic closure is used
273+
units = none
274+
dimensions = ()
275+
type = real
276+
kind = kind_phys
277+
intent = in
278+
[betadcu]
279+
standard_name = tuning_param_for_deep_cu
280+
long_name = tuning param for deep cu in case prognostic closure is used
281+
units = none
282+
dimensions = ()
283+
type = real
284+
intent = in
247285
[phil]
248286
standard_name = geopotential
249287
long_name = layer geopotential
File renamed without changes.

physics/cu_c3_driver_post.meta renamed to physics/CONV/C3/cu_c3_driver_post.meta

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[ccpp-table-properties]
22
name = cu_c3_driver_post
33
type = scheme
4-
dependencies = machine.F
4+
dependencies = ../../hooks/machine.F
55

66
########################################################################
77
[ccpp-arg-table]
File renamed without changes.

physics/cu_c3_driver_pre.meta renamed to physics/CONV/C3/cu_c3_driver_pre.meta

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[ccpp-table-properties]
22
name = cu_c3_driver_pre
33
type = scheme
4-
dependencies = machine.F
4+
dependencies = ../../hooks/machine.F
55

66
########################################################################
77
[ccpp-arg-table]

0 commit comments

Comments
 (0)