Skip to content

Commit

Permalink
RRTMGP refactoring (#619)
Browse files Browse the repository at this point in the history
* Changes to typedefs for RRTMGP refactoring. Updates to prebuild and SDFs.

* bugfix to save q state regardless of diagnostic flag, submodule update

* optimizing massflux at cloud base based on P8 simulations, submodule update ccpp/physics

* Added RRTMGP p8 coupled RT.

* Move allocation of RRTMGP DDTs to init.

* Removed deprecated SDFs

Co-authored-by: Lisa Bengtsson <Lisa.Bengtsson@noaa.gov>
  • Loading branch information
dustinswales and lisa-bengtsson authored Feb 7, 2023
1 parent 603e1a0 commit 0e8f580
Show file tree
Hide file tree
Showing 8 changed files with 101 additions and 447 deletions.
40 changes: 3 additions & 37 deletions ccpp/config/ccpp_prebuild_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,6 @@
'physics/physics/h2o_def.f',
'physics/physics/ozne_def.f',
'physics/physics/radiation_surface.f',
'physics/physics/rte-rrtmgp/rrtmgp/mo_gas_optics_rrtmgp.F90',
'physics/physics/rte-rrtmgp/rrtmgp/mo_gas_concentrations.F90',
'physics/physics/rte-rrtmgp/rte/mo_optical_props.F90',
'physics/physics/rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90',
'physics/physics/rte-rrtmgp/rte/mo_source_functions.F90',
'data/CCPP_typedefs.F90',
'data/GFS_typedefs.F90',
'data/CCPP_data.F90',
Expand Down Expand Up @@ -68,27 +63,6 @@
'GFS_stateout_type' : 'GFS_Data(cdata%blk_no)%Stateout',
'GFS_typedefs' : '',
},
'mo_gas_concentrations' : {
'ty_gas_concs' : '',
'mo_gas_concentrations' : '',
},
'mo_gas_optics_rrtmgp' : {
'ty_gas_optics_rrtmgp' : '',
'mo_gas_optics_rrtmgp' : '',
},
'mo_optical_props' : {
'ty_optical_props_1scl' : '',
'ty_optical_props_2str' : '',
'mo_optical_props' : '',
},
'mo_cloud_optics' : {
'ty_cloud_optics' : '',
'mo_cloud_optics' : '',
},
'mo_source_functions' : {
'ty_source_func_lw' : '',
'mo_source_functions' : '',
},
}

# Add all physics scheme files relative to basedir
Expand Down Expand Up @@ -218,23 +192,15 @@
'physics/smoke/rrfs_smoke_postpbl.F90',
'physics/smoke/rrfs_smoke_lsdep_wrapper.F90',
# RRTMGP
'physics/physics/rrtmgp_lw_gas_optics.F90',
'physics/physics/rrtmgp_lw_cloud_optics.F90',
'physics/physics/rrtmgp_sw_gas_optics.F90',
'physics/physics/rrtmgp_sw_cloud_optics.F90',
'physics/physics/rrtmgp_aerosol_optics.F90',
'physics/physics/rrtmgp_lw_rte.F90',
'physics/physics/rrtmgp_sw_rte.F90',
'physics/physics/rrtmgp_lw_main.F90',
'physics/physics/rrtmgp_sw_main.F90',
'physics/physics/GFS_rrtmgp_setup.F90',
'physics/physics/GFS_rrtmgp_pre.F90',
'physics/physics/rrtmgp_lw_pre.F90',
'physics/physics/GFS_rrtmgp_lw_post.F90',
'physics/physics/rrtmgp_lw_cloud_sampling.F90',
'physics/physics/rrtmgp_sw_cloud_sampling.F90',
'physics/physics/GFS_cloud_diagnostics.F90',
'physics/physics/GFS_rrtmgp_cloud_mp.F90',
'physics/physics/GFS_rrtmgp_cloud_overlap.F90',
'physics/physics/GFS_rrtmgp_sw_post.F90'
'physics/physics/GFS_rrtmgp_post.F90'
]

# Default build dir, relative to current working directory,
Expand Down
191 changes: 28 additions & 163 deletions ccpp/data/CCPP_typedefs.F90

Large diffs are not rendered by default.

176 changes: 42 additions & 134 deletions ccpp/data/CCPP_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -2755,145 +2755,53 @@
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[sw_optical_props_clrsky]
standard_name = shortwave_optical_properties_for_clear_sky
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[sw_optical_props_cloudsByBand]
standard_name = shortwave_optical_properties_for_cloudy_atmosphere_by_band
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[sw_optical_props_cnvcloudsByBand]
standard_name = shortwave_optical_properties_for_convective_cloudy_atmosphere_by_band
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
[sw_optical_props_MYNNcloudsByBand]
standard_name = shortwave_optical_properties_for_MYNN_EDMF_PBL_cloudy_atmosphere_by_band
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[sw_optical_props_cnvclouds]
standard_name = shortwave_optical_properties_for_convective_cloudy_atmosphere
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
active = (flag_for_rrtmgp_radiation_scheme)
[sw_optical_props_precipByBand]
standard_name = shortwave_optical_properties_for_precipitation_by_band
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[sw_optical_props_precip]
standard_name = shortwave_optical_properties_for_precipitation
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[sw_optical_props_clouds]
standard_name = shortwave_optical_properties_for_cloudy_atmosphere
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[sw_optical_props_aerosol]
standard_name = shortwave_optical_properties_for_aerosols
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[gas_concentrations]
standard_name = Gas_concentrations_for_RRTMGP_suite
long_name = DDT containing gas concentrations for RRTMGP radiation scheme
units = DDT
dimensions = ()
type = ty_gas_concs
active = (flag_for_rrtmgp_radiation_scheme)
[sources]
standard_name = longwave_source_function
long_name = Fortran DDT containing RRTMGP source functions
units = DDT
dimensions = ()
type = ty_source_func_lw
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_clrsky]
standard_name = longwave_optical_properties_for_clear_sky
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_1scl
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_clouds]
standard_name = longwave_optical_properties_for_cloudy_atmosphere
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_precip]
standard_name = longwave_optical_properties_for_precipitation
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_cloudsByBand]
standard_name = longwave_optical_properties_for_cloudy_atmosphere_by_band
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
[vmr_o2]
standard_name = volume_mixing_ratio_for_o2
long_name = molar mixing ratio of o2 in with respect to dry air
units = 1
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_cnvcloudsByBand]
standard_name = longwave_optical_properties_for_convective_cloudy_atmosphere_by_band
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
[vmr_h2o]
standard_name = volume_mixing_ratio_for_h2o
long_name = molar mixing ratio of h2o in with respect to dry air
units = 1
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_MYNNcloudsByBand]
standard_name = longwave_optical_properties_for_MYNN_EDMF_PBL_cloudy_atmosphere_by_band
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
[vmr_o3]
standard_name = volume_mixing_ratio_for_o3
long_name = molar mixing ratio of o3 in with respect to dry air
units = 1
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_cnvclouds]
standard_name = longwave_optical_properties_for_convective_cloudy_atmosphere
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
[vmr_ch4]
standard_name = volume_mixing_ratio_for_ch4
long_name = molar mixing ratio of ch4 in with respect to dry air
units = 1
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_precipByBand]
standard_name = longwave_optical_properties_for_precipitation_by_band
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_2str
[vmr_n2o]
standard_name = volume_mixing_ratio_for_n2o
long_name = molar mixing ratio of n2o in with respect to dry air
units = 1
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[lw_optical_props_aerosol]
standard_name = longwave_optical_properties_for_aerosols
long_name = Fortran DDT containing RRTMGP optical properties
units = DDT
dimensions = ()
type = ty_optical_props_1scl
[vmr_co2]
standard_name = volume_mixing_ratio_for_co2
long_name = molar mixing ratio of co2 in with respect to dry air
units = 1
dimensions = (horizontal_loop_extent,vertical_layer_dimension)
type = real
kind = kind_phys
active = (flag_for_rrtmgp_radiation_scheme)
[sfc_emiss_byband]
standard_name = surface_emissivity_in_each_RRTMGP_LW_band
Expand Down
15 changes: 12 additions & 3 deletions ccpp/data/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -788,9 +788,11 @@ module GFS_typedefs
real(kind_phys) :: lfnc_k !< Logistic function transition depth (Pa)
real(kind_phys) :: lfnc_p0 !< Logistic function transition level (Pa)
logical :: doGP_lwscat !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics
logical :: doGP_sgs_cnv !< If true, include explicit SubGridScale convective cloud in RRTMGP
logical :: doGP_sgs_mynn !< If true, include explicit SubGridScale MYNN-EDMF cloud in RRTMGP
logical :: doGP_smearclds !< If true, include implicit SubGridScale clouds in RRTMGP
logical :: doGP_sgs_cnv !< If true, include SubGridScale convective cloud in RRTMGP
logical :: doGP_sgs_mynn !< If true, include SubGridScale MYNN-EDMF cloud in RRTMGP
integer :: rrtmgp_lw_phys_blksz !< Number of columns to pass to RRTMGP LW per block.
integer :: rrtmgp_sw_phys_blksz !< Number of columns to pass to RRTMGP SW per block.
logical :: doGP_smearclds !< If true, include implicit SubGridScale clouds in RRTMGP
real(kind_phys) :: minGPpres !< Minimum pressure allowed in RRTMGP.
real(kind_phys) :: maxGPpres !< Maximum pressure allowed in RRTMGP.
real(kind_phys) :: minGPtemp !< Minimum temperature allowed in RRTMGP.
Expand Down Expand Up @@ -3037,6 +3039,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
logical :: doGP_lwscat = .false. !< If true, include scattering in longwave cloud-optics, only compatible w/ GP cloud-optics
logical :: doGP_sgs_cnv = .false. !< If true, include SubGridScale convective cloud in RRTMGP
logical :: doGP_sgs_mynn = .false. !< If true, include SubGridScale MYNN-EDMF cloud in RRTMGP
integer :: rrtmgp_lw_phys_blksz= 1 !< Number of columns for RRTMGP LW scheme to process at each instance.
integer :: rrtmgp_sw_phys_blksz= 1 !< Number of columns for RRTMGP SW scheme to process at each instance.
logical :: doGP_smearclds = .true. !< If true, include implicit SubGridScale clouds in RRTMGP
!--- Z-C microphysical parameters
integer :: imp_physics = 99 !< choice of cloud scheme
Expand Down Expand Up @@ -3499,6 +3503,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
rrtmgp_nrghice, rrtmgp_nGauss_ang, do_GPsw_Glw, &
use_LW_jacobian, doGP_lwscat, damp_LW_fluxadj, lfnc_k, &
lfnc_p0, iovr_convcld, doGP_sgs_cnv, doGP_sgs_mynn, &
rrtmgp_lw_phys_blksz, rrtmgp_sw_phys_blksz, &
! IN CCN forcing
iccn, mraerosol, &
!--- microphysical parameterizations
Expand Down Expand Up @@ -3946,6 +3951,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%doGP_lwscat = doGP_lwscat
Model%doGP_sgs_cnv = doGP_sgs_cnv
Model%doGP_sgs_mynn = doGP_sgs_mynn
Model%rrtmgp_lw_phys_blksz = rrtmgp_lw_phys_blksz
Model%rrtmgp_sw_phys_blksz = rrtmgp_sw_phys_blksz
if (Model%do_RRTMGP) then
! RRTMGP incompatible with levr /= levs
if (Model%levr /= Model%levs) then
Expand Down Expand Up @@ -5833,6 +5840,8 @@ subroutine control_print(Model)
print *, ' doGP_sgs_mynn : ', Model%doGP_sgs_cnv
print *, ' doGP_smearclds : ', Model%doGP_smearclds
print *, ' iovr_convcld : ', Model%iovr_convcld
print *, ' rrtmgp_sw_phys_blksz : ', Model%rrtmgp_sw_phys_blksz
print *, ' rrtmgp_lw_phys_blksz : ', Model%rrtmgp_lw_phys_blksz
endif
print *, ' '
print *, 'microphysical switch'
Expand Down
12 changes: 12 additions & 0 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -3445,6 +3445,18 @@
units = flag
dimensions = ()
type = logical
[rrtmgp_lw_phys_blksz]
standard_name = number_of_columns_per_RRTMGP_LW_block
long_name = number of columns to process at a time by RRTMGP LW scheme
units = count
dimensions = ()
type = integer
[rrtmgp_sw_phys_blksz]
standard_name = number_of_columns_per_RRTMGP_SW_block
long_name = number of columns to process at a time by RRTMGP SW scheme
units = count
dimensions = ()
type = integer
[doGP_smearclds]
standard_name = flag_for_implicit_sgs_cloud_in_RRTMGP
long_name = logical flag to impicit SGS cloud in RRTMGP
Expand Down
2 changes: 1 addition & 1 deletion ccpp/physics
Submodule physics updated 40 files
+1 −1 .gitmodules
+0 −12 CMakeLists.txt
+25 −23 physics/GFS_rrtmgp_cloud_mp.F90
+3 −3 physics/GFS_rrtmgp_cloud_mp.meta
+0 −188 physics/GFS_rrtmgp_lw_post.F90
+0 −253 physics/GFS_rrtmgp_lw_post.meta
+394 −0 physics/GFS_rrtmgp_post.F90
+157 −34 physics/GFS_rrtmgp_post.meta
+66 −52 physics/GFS_rrtmgp_pre.F90
+80 −56 physics/GFS_rrtmgp_pre.meta
+3 −3 physics/GFS_rrtmgp_setup.F90
+1 −1 physics/GFS_rrtmgp_setup.meta
+0 −286 physics/GFS_rrtmgp_sw_post.F90
+0 −95 physics/GFS_rrtmgp_sw_pre.F90
+0 −124 physics/GFS_rrtmgp_sw_pre.meta
+27 −39 physics/rrtmgp_aerosol_optics.F90
+50 −30 physics/rrtmgp_aerosol_optics.meta
+18 −200 physics/rrtmgp_lw_cloud_optics.F90
+0 −412 physics/rrtmgp_lw_cloud_optics.meta
+0 −170 physics/rrtmgp_lw_cloud_sampling.F90
+0 −226 physics/rrtmgp_lw_cloud_sampling.meta
+13 −108 physics/rrtmgp_lw_gas_optics.F90
+0 −203 physics/rrtmgp_lw_gas_optics.meta
+611 −0 physics/rrtmgp_lw_main.F90
+641 −0 physics/rrtmgp_lw_main.meta
+0 −61 physics/rrtmgp_lw_pre.F90
+0 −47 physics/rrtmgp_lw_pre.meta
+0 −208 physics/rrtmgp_lw_rte.F90
+0 −208 physics/rrtmgp_lw_rte.meta
+21 −223 physics/rrtmgp_sw_cloud_optics.F90
+0 −393 physics/rrtmgp_sw_cloud_optics.meta
+0 −174 physics/rrtmgp_sw_cloud_sampling.F90
+0 −240 physics/rrtmgp_sw_cloud_sampling.meta
+11 −126 physics/rrtmgp_sw_gas_optics.F90
+0 −201 physics/rrtmgp_sw_gas_optics.meta
+683 −0 physics/rrtmgp_sw_main.F90
+664 −0 physics/rrtmgp_sw_main.meta
+0 −219 physics/rrtmgp_sw_rte.F90
+0 −240 physics/rrtmgp_sw_rte.meta
+1 −1 physics/rte-rrtmgp
15 changes: 3 additions & 12 deletions ccpp/suites/suite_FV3_GFS_v17_p8_rrtmgp.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,10 @@
<scheme>GFS_rrtmgp_cloud_mp</scheme>
<scheme>GFS_rrtmgp_cloud_overlap</scheme>
<scheme>GFS_cloud_diagnostics</scheme>
<scheme>rad_sw_pre</scheme>
<scheme>rrtmgp_aerosol_optics</scheme>
<scheme>rrtmgp_sw_gas_optics</scheme>
<scheme>rrtmgp_sw_cloud_optics</scheme>
<scheme>rrtmgp_sw_cloud_sampling</scheme>
<scheme>rrtmgp_sw_rte</scheme>
<scheme>GFS_rrtmgp_sw_post</scheme>
<scheme>rrtmgp_lw_pre</scheme>
<scheme>rrtmgp_lw_gas_optics</scheme>
<scheme>rrtmgp_lw_cloud_optics</scheme>
<scheme>rrtmgp_lw_cloud_sampling</scheme>
<scheme>rrtmgp_lw_rte</scheme>
<scheme>GFS_rrtmgp_lw_post</scheme>
<scheme>rrtmgp_sw_main</scheme>
<scheme>rrtmgp_lw_main</scheme>
<scheme>GFS_rrtmgp_post</scheme>
</subcycle>
</group>
<group name="physics">
Expand Down
Loading

0 comments on commit 0e8f580

Please sign in to comment.