Skip to content

Commit bfbfd80

Browse files
committed
update SCM for ufs-dev-PR253
1 parent 676bca5 commit bfbfd80

File tree

4 files changed

+109
-4
lines changed

4 files changed

+109
-4
lines changed

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#url = https://github.com/NCAR/ccpp-physics
88
#branch = main
99
url = https://github.com/grantfirl/ccpp-physics
10-
branch = ufs-dev-PR195
10+
branch = ufs-dev-PR253
1111
[submodule "CMakeModules"]
1212
path = CMakeModules
1313
url = https://github.com/noaa-emc/CMakeModules

scm/src/GFS_typedefs.F90

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,6 +1661,8 @@ module GFS_typedefs
16611661
real(kind=kind_phys) :: rhcmax ! maximum critical relative humidity, replaces rhc_max in physcons.F90
16621662
real(kind=kind_phys) :: huge !< huge fill value
16631663

1664+
!--- AQM Canopy
1665+
logical :: do_canopy !< control flag for aqm canopy effects
16641666
!--- lightning threat and diagsnostics
16651667
logical :: lightning_threat !< report lightning threat indices
16661668

@@ -2219,6 +2221,18 @@ module GFS_typedefs
22192221
! Diagnostics for coupled air quality model
22202222
real (kind=kind_phys), pointer :: aod (:) => null() !< instantaneous aerosol optical depth ( n/a )
22212223

2224+
!IVAI
2225+
! Diagnostics for coupled air quality model
2226+
real (kind=kind_phys), pointer :: coszens(:) => null() ! Cosine SZA for photolysis
2227+
real (kind=kind_phys), pointer :: jo3o1d(:) => null() ! instantaneous O3O1D photolysis rate
2228+
real (kind=kind_phys), pointer :: jno2 (:) => null() ! instantaneous NO2 photolysis rate
2229+
real (kind=kind_phys), pointer :: claie(:) => null() ! Leaf Area Index ECCC
2230+
real (kind=kind_phys), pointer :: cfch (:) => null() ! Forest Canopy Height
2231+
real (kind=kind_phys), pointer :: cfrt (:) => null() ! Forest Fraction
2232+
real (kind=kind_phys), pointer :: cclu (:) => null() ! Clumping Index
2233+
real (kind=kind_phys), pointer :: cpopu(:) => null() ! Population density
2234+
!IVAI
2235+
22222236
! Auxiliary output arrays for debugging
22232237
real (kind=kind_phys), pointer :: aux2d(:,:) => null() !< auxiliary 2d arrays in output (for debugging)
22242238
real (kind=kind_phys), pointer :: aux3d(:,:,:)=> null() !< auxiliary 2d arrays in output (for debugging)
@@ -3747,8 +3761,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
37473761
logical :: do_ugwp_v1 = .false. !< flag for version 1 ugwp GWD
37483762
logical :: do_ugwp_v1_orog_only = .false. !< flag for version 1 ugwp GWD (orographic drag only)
37493763
logical :: do_ugwp_v1_w_gsldrag = .false. !< flag for version 1 ugwp GWD (orographic drag only)
3750-
logical :: do_ngw_ec = .false. !< flag for ecmwf ngwd algorithm
37513764
!--- vay-2018
3765+
logical :: do_ngw_ec = .false. !< flag for ecmwf ngwd algorithm
37523766
logical :: ldiag_ugwp = .false. !< flag for UGWP diag fields
37533767
logical :: ugwp_seq_update = .false. !< flag for updating winds between UGWP steps
37543768
logical :: do_ugwp = .false. !< flag do UGWP+RF
@@ -4119,6 +4133,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
41194133
! logical :: land_iau_do_stcsmc_adjustment = .false.
41204134
! real(kind=kind_phys) :: land_iau_min_T_increment = 0.0001
41214135

4136+
!--- switch for aqm canopy effects
4137+
logical :: do_canopy = .false. !< flag for canopy option
4138+
41224139
!--- END NAMELIST VARIABLES
41234140

41244141
NAMELIST /gfs_physics_nml/ &
@@ -4243,7 +4260,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
42434260
diag_flux, diag_log, &
42444261
! vertical diffusion
42454262
xkzm_m, xkzm_h, xkzm_s, xkzminv, moninq_fac, dspfac, &
4246-
bl_upfr, bl_dnfr, rlmx, elmx, sfc_rlm, tc_pbl, use_lpt, &
4263+
bl_upfr, bl_dnfr, rlmx, elmx, sfc_rlm, tc_pbl, use_lpt, &
42474264
!--- canopy heat storage parameterization
42484265
h0facu, h0facs, &
42494266
!--- cellular automata
@@ -4278,6 +4295,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
42784295
!--- (DFI) time ranges with radar-prescribed microphysics tendencies
42794296
! and (maybe) convection suppression
42804297
fh_dfi_radar, radar_tten_limits, do_cap_suppress, &
4298+
! aqm canopy option
4299+
do_canopy, &
42814300
!--- GSL lightning threat indices
42824301
lightning_threat, &
42834302
!--- CCPP suite simulator
@@ -5303,6 +5322,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
53035322
Model%do_spp = do_spp
53045323
Model%n_var_spp = n_var_spp
53055324

5325+
!--- aqm canopy effects in physics
5326+
Model%do_canopy = do_canopy
5327+
53065328
if (Model%lndp_type/=0) then
53075329
allocate (Model%lndp_var_list(Model%n_var_lndp))
53085330
allocate (Model%lndp_prt_list(Model%n_var_lndp))
@@ -7265,6 +7287,7 @@ subroutine control_print(Model)
72657287
print *, ' first_time_step : ', Model%first_time_step
72667288
print *, ' restart : ', Model%restart
72677289
print *, ' lsm_cold_start : ', Model%lsm_cold_start
7290+
print *, ' do_canopy : ', Model%do_canopy
72687291
print *, ' '
72697292
print *, 'lightning threat indexes'
72707293
print *, ' lightning_threat : ', Model%lightning_threat
@@ -8189,6 +8212,42 @@ subroutine diag_create (Diag, Model)
81898212
Diag%aod = zero
81908213
end if
81918214

8215+
!IVAI:
8216+
! Air quality diagnostics
8217+
! -- initialize diagnostic variables
8218+
if (Model%cplaqm) then
8219+
8220+
!IVAI: photdiag arrays
8221+
allocate (Diag%coszens(IM))
8222+
Diag%coszens= zero
8223+
8224+
allocate (Diag%jo3o1d(IM))
8225+
Diag%jo3o1d = zero
8226+
8227+
allocate (Diag%jno2(IM))
8228+
Diag%jno2 = zero
8229+
8230+
!IVAI: canopy arrays read via aqm_emis_read
8231+
if (Model%do_canopy) then
8232+
allocate (Diag%claie(IM))
8233+
Diag%claie = zero
8234+
8235+
allocate (Diag%cfch (IM))
8236+
Diag%cfch = zero
8237+
8238+
allocate (Diag%cfrt (IM))
8239+
Diag%cfrt = zero
8240+
8241+
allocate (Diag%cclu (IM))
8242+
Diag%cclu = zero
8243+
8244+
allocate (Diag%cpopu (IM))
8245+
Diag%cpopu = zero
8246+
end if! (Model%do_canopy)
8247+
8248+
end if ! (Model%cplaqm)
8249+
!IVAI
8250+
81928251
! Auxiliary arrays in output for debugging
81938252
if (Model%naux2d>0) then
81948253
allocate (Diag%aux2d(IM,Model%naux2d))

scm/src/GFS_typedefs.meta

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7864,6 +7864,12 @@
78647864
units = flag
78657865
dimensions = ()
78667866
type = logical
7867+
[do_canopy]
7868+
standard_name = flag_for_canopy_option
7869+
long_name = flag for in-canopy eddy diffusivity adjustment option
7870+
units = flag
7871+
dimensions = ()
7872+
type = logical
78677873
[clm_lake_depth_default]
78687874
standard_name = default_lake_depth_in_clm_lake_model
78697875
long_name = default lake depth in clm lake model
@@ -8834,6 +8840,46 @@
88348840
dimensions = (horizontal_dimension,number_of_diagnostics_variables_for_radiation)
88358841
type = real
88368842
kind = kind_phys
8843+
[claie]
8844+
standard_name = canopy_leaf_area_index
8845+
long_name = canopy leaf area index
8846+
units = none
8847+
dimensions = (horizontal_dimension)
8848+
type = real
8849+
kind = kind_phys
8850+
active = (flag_for_air_quality_coupling .and. flag_for_canopy_option)
8851+
[cfch]
8852+
standard_name = canopy_forest_height
8853+
long_name = canopy forest height
8854+
units = m
8855+
dimensions = (horizontal_dimension)
8856+
type = real
8857+
kind = kind_phys
8858+
active = (flag_for_air_quality_coupling .and. flag_for_canopy_option)
8859+
[cfrt]
8860+
standard_name = canopy_forest_fraction
8861+
long_name = canopy forest fraction
8862+
units = none
8863+
dimensions = (horizontal_dimension)
8864+
type = real
8865+
kind = kind_phys
8866+
active = (flag_for_air_quality_coupling .and. flag_for_canopy_option)
8867+
[cclu]
8868+
standard_name = canopy_clumping_index
8869+
long_name = canopy clumping index
8870+
units = none
8871+
dimensions = (horizontal_dimension)
8872+
type = real
8873+
kind = kind_phys
8874+
active = (flag_for_air_quality_coupling .and. flag_for_canopy_option)
8875+
[cpopu]
8876+
standard_name = canopy_population_density
8877+
long_name = population density used for canopy correction
8878+
units = km-2
8879+
dimensions = (horizontal_dimension)
8880+
type = real
8881+
kind = kind_phys
8882+
active = (flag_for_air_quality_coupling .and. flag_for_canopy_option)
88378883
[topfsw]
88388884
standard_name = sw_fluxes_top_atmosphere
88398885
long_name = sw radiation fluxes at toa

0 commit comments

Comments
 (0)