Skip to content

Commit

Permalink
RRTMGP improvements (#151)
Browse files Browse the repository at this point in the history
* Add infrastructure to FV3 for recent RRTMGP improvements in ccpp-physics
* Move allocate statements
* Updated ccpp-physics
* Updated physics. Some changes on FV3 side to handle physics changes.
* Updated .gitmodules
* Revert change to .gitmodules and update submodule pointer for ccpp-physics
Co-authored-by: Dom Heinzeller <climbfuji@ymail.com>
  • Loading branch information
dustinswales authored Aug 7, 2020
1 parent aada773 commit 1959bde
Show file tree
Hide file tree
Showing 6 changed files with 510 additions and 348 deletions.
87 changes: 52 additions & 35 deletions ccpp/config/ccpp_prebuild_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@
'FV3/ccpp/physics/physics/rte-rrtmgp/rte/mo_rte_kind.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/rte/mo_rte_lw.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/rte/mo_rte_sw.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/rte/mo_rte_config.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/rte/mo_source_functions.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/rte/kernels/mo_fluxes_broadband_kernels.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/rte/kernels/mo_optical_props_kernels.F90',
Expand All @@ -198,7 +199,9 @@
'FV3/ccpp/physics/physics/rte-rrtmgp/extensions/mo_heating_rates.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/extensions/mo_rrtmgp_clr_all_sky.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/extensions/cloud_optics/mo_cloud_optics.F90',
'FV3/ccpp/physics/physics/rte-rrtmgp/extensions/cloud_optics/mo_cloud_sampling.F90',
'FV3/ccpp/physics/physics/rrtmg_lw_cloud_optics.F90' ,
'FV3/ccpp/physics/physics/rrtmg_sw_cloud_optics.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_aux.F90' ,
# derived data type definitions
'FV3/gfsphysics/GFS_layer/GFS_typedefs.F90',
'FV3/gfsphysics/CCPP_layer/CCPP_typedefs.F90',
Expand Down Expand Up @@ -297,25 +300,26 @@
# HAFSFER_HIRES
'FV3/ccpp/physics/physics/mp_fer_hires.F90',
# RRTMGP
'FV3/ccpp/physics/physics/rrtmg_lw_cloud_optics.F90',
'FV3/ccpp/physics/physics/rrtmg_sw_cloud_optics.F90',
'FV3/ccpp/physics/physics/rrtmgp_aux.F90',
'FV3/ccpp/physics/physics/rrtmgp_lw_gas_optics.F90',
'FV3/ccpp/physics/physics/rrtmgp_lw_cloud_optics.F90',
'FV3/ccpp/physics/physics/rrtmgp_sw_gas_optics.F90',
'FV3/ccpp/physics/physics/rrtmgp_sw_cloud_optics.F90',
'FV3/ccpp/physics/physics/rrtmgp_sw_aerosol_optics.F90',
'FV3/ccpp/physics/physics/rrtmgp_lw_rte.F90',
'FV3/ccpp/physics/physics/rrtmgp_lw_cloud_sampling.F90',
'FV3/ccpp/physics/physics/rrtmgp_sw_rte.F90',
'FV3/ccpp/physics/physics/rrtmgp_sw_cloud_sampling.F90',
'FV3/ccpp/physics/physics/rrtmgp_lw_aerosol_optics.F90',
'FV3/ccpp/physics/physics/GFS_rrtmgp_setup.F90',
'FV3/ccpp/physics/physics/GFS_rrtmgp_pre.F90',
'FV3/ccpp/physics/physics/rrtmgp_lw_pre.F90',
'FV3/ccpp/physics/physics/GFS_rrtmgp_sw_pre.F90',
'FV3/ccpp/physics/physics/GFS_rrtmgp_lw_post.F90',
'FV3/ccpp/physics/physics/GFS_rrtmgp_sw_post.F90',
'FV3/ccpp/physics/physics/rrtmgp_lw_gas_optics.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_lw_cloud_optics.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_sw_gas_optics.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_sw_cloud_optics.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_sw_aerosol_optics.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_lw_rte.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_sw_rte.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_lw_aerosol_optics.F90' ,
'FV3/ccpp/physics/physics/GFS_rrtmgp_setup.F90' ,
'FV3/ccpp/physics/physics/GFS_rrtmgp_pre.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_lw_pre.F90' ,
'FV3/ccpp/physics/physics/GFS_rrtmgp_sw_pre.F90' ,
'FV3/ccpp/physics/physics/GFS_rrtmgp_lw_post.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_lw_cloud_sampling.F90' ,
'FV3/ccpp/physics/physics/rrtmgp_sw_cloud_sampling.F90' ,
'FV3/ccpp/physics/physics/GFS_cloud_diagnostics.F90' ,
'FV3/ccpp/physics/physics/mo_cloud_sampling.F90' ,
'FV3/ccpp/physics/physics/GFS_rrtmgp_gfdlmp_pre.F90' ,
'FV3/ccpp/physics/physics/GFS_rrtmgp_zhaocarr_pre.F90' ,
'FV3/ccpp/physics/physics/GFS_rrtmgp_sw_post.F90'
]

# Default build dir, relative to current working directory,
Expand Down Expand Up @@ -356,20 +360,6 @@
# if no entry is made here. Possible values are: 'all', 'none',
# or a list of standard_names: [ 'var1', 'var3' ].
OPTIONAL_ARGUMENTS = {
'rrtmgp_sw_rte' : {
'rrtmgp_sw_rte_run' : [
'components_of_surface_downward_shortwave_fluxes',
],
},
'GFS_rrtmgp_sw_post' : {
'GFS_rrtmgp_sw_post_run' : 'none',
},
'rrtmgp_lw_rte' : {
'rrtmgp_lw_rte_run' : 'none',
},
'GFS_rrtmgp_lw_post' : {
'GFS_rrtmgp_lw_post_run' : 'none',
},
'rrtmg_sw' : {
'rrtmg_sw_run' : [
'tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step_and_radiation_levels',
Expand Down Expand Up @@ -430,7 +420,34 @@
'rime_factor',
],
},

'rrtmgp_lw_rte' : {
'rrtmgp_lw_rte_run' : [
'RRTMGP_jacobian_of_lw_flux_profile_upward',
'RRTMGP_jacobian_of_lw_flux_profile_downward',
],
},
'rrtmgp_sw_rte' : {
'rrtmgp_sw_rte_run' : [
'components_of_surface_downward_shortwave_fluxes',
],
},
'GFS_rrtmgp_sw_post' : {
'GFS_rrtmgp_sw_post_run' : [
'tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_time_step',
'components_of_surface_downward_shortwave_fluxes',
],
},
'GFS_rrtmgp_lw_post' : {
'GFS_rrtmgp_lw_post_run' : [
'tendency_of_air_temperature_due_to_longwave_heating_assuming_clear_sky_on_radiation_time_step',
],
},
'GFS_suite_interstitial_2' : {
'GFS_suite_interstitial_2_run' : [
'RRTMGP_jacobian_of_lw_flux_profile_upward',
'RRTMGP_lw_flux_profile_upward_allsky',
],
},
#'subroutine_name_1' : 'all',
#'subroutine_name_2' : 'none',
#'subroutine_name_2' : [ 'var1', 'var3'],
Expand Down
2 changes: 1 addition & 1 deletion ccpp/physics
Submodule physics updated 41 files
+596 −0 physics/GFS_cloud_diagnostics.F90
+159 −0 physics/GFS_cloud_diagnostics.meta
+234 −0 physics/GFS_rrtmgp_gfdlmp_pre.F90
+385 −0 physics/GFS_rrtmgp_gfdlmp_pre.meta
+116 −132 physics/GFS_rrtmgp_lw_post.F90
+100 −46 physics/GFS_rrtmgp_lw_post.meta
+98 −547 physics/GFS_rrtmgp_pre.F90
+179 −189 physics/GFS_rrtmgp_pre.meta
+45 −21 physics/GFS_rrtmgp_setup.F90
+61 −13 physics/GFS_rrtmgp_setup.meta
+174 −159 physics/GFS_rrtmgp_sw_post.F90
+210 −66 physics/GFS_rrtmgp_sw_post.meta
+54 −43 physics/GFS_rrtmgp_sw_pre.F90
+247 −48 physics/GFS_rrtmgp_sw_pre.meta
+253 −0 physics/GFS_rrtmgp_zhaocarr_pre.F90
+406 −0 physics/GFS_rrtmgp_zhaocarr_pre.meta
+73 −7 physics/GFS_suite_interstitial.F90
+45 −1 physics/GFS_suite_interstitial.meta
+1 −0 physics/drag_suite.F90
+398 −0 physics/mo_cloud_sampling.F90
+2 −0 physics/module_sf_noahmp_glacier.f90
+4 −0 physics/physcons.F90
+9 −1 physics/physparam.f
+200 −1 physics/radiation_clouds.f
+9 −162 physics/rrtmg_lw_cloud_optics.F90
+42 −174 physics/rrtmg_sw_cloud_optics.F90
+104 −75 physics/rrtmgp_lw_cloud_optics.F90
+63 −14 physics/rrtmgp_lw_cloud_optics.meta
+150 −29 physics/rrtmgp_lw_cloud_sampling.F90
+43 −0 physics/rrtmgp_lw_cloud_sampling.meta
+11 −4 physics/rrtmgp_lw_gas_optics.F90
+51 −52 physics/rrtmgp_lw_rte.F90
+34 −18 physics/rrtmgp_lw_rte.meta
+151 −68 physics/rrtmgp_sw_cloud_optics.F90
+61 −12 physics/rrtmgp_sw_cloud_optics.meta
+197 −51 physics/rrtmgp_sw_cloud_sampling.F90
+43 −0 physics/rrtmgp_sw_cloud_sampling.meta
+26 −9 physics/rrtmgp_sw_gas_optics.F90
+20 −22 physics/rrtmgp_sw_rte.F90
+8 −9 physics/rrtmgp_sw_rte.meta
+1 −1 physics/rte-rrtmgp
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="FV3_GFS_2017_RRTMGP" lib="ccppphys" ver="4">
<suite name="FV3_GFS_v15p2_RRTMGP" lib="ccppphys" ver="4">
<!-- <init></init> -->
<group name="fast_physics">
<subcycle loop="1">
<scheme>fv_sat_adj</scheme>
</subcycle>
</group>
<group name="time_vary">
<subcycle loop="1">
<scheme>GFS_time_vary_pre</scheme>
Expand All @@ -14,6 +19,8 @@
<subcycle loop="1">
<scheme>GFS_suite_interstitial_rad_reset</scheme>
<scheme>GFS_rrtmgp_pre</scheme>
<scheme>GFS_rrtmgp_gfdlmp_pre</scheme>
<scheme>GFS_cloud_diagnostics</scheme>
<scheme>GFS_rrtmgp_sw_pre</scheme>
<scheme>rrtmgp_sw_gas_optics</scheme>
<scheme>rrtmgp_sw_aerosol_optics</scheme>
Expand Down Expand Up @@ -68,7 +75,8 @@
<scheme>GFS_GWD_generic_post</scheme>
<scheme>rayleigh_damp</scheme>
<scheme>GFS_suite_stateout_update</scheme>
<scheme>ozphys</scheme>
<scheme>ozphys_2015</scheme>
<scheme>h2ophys</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
<scheme>GFS_DCNV_generic_pre</scheme>
Expand All @@ -80,15 +88,15 @@
<scheme>GFS_suite_interstitial_4</scheme>
<scheme>cnvc90</scheme>
<scheme>GFS_MP_generic_pre</scheme>
<scheme>zhaocarr_gscond</scheme>
<scheme>zhaocarr_precpd</scheme>
<scheme>gfdl_cloud_microphys</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
</subcycle>
</group>
<group name="stochastics">
<subcycle loop="1">
<scheme>GFS_stochastics</scheme>
<scheme>phys_tend</scheme>
</subcycle>
</group>
<!-- <finalize></finalize> -->
Expand Down
103 changes: 103 additions & 0 deletions ccpp/suites/suite_FV3_GFS_v16beta_RRTMGP.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="FV3_GFS_v16beta_RRTMGP" lib="ccppphys" ver="4">
<!-- <init></init> -->
<group name="fast_physics">
<subcycle loop="1">
<scheme>fv_sat_adj</scheme>
</subcycle>
</group>
<group name="time_vary">
<subcycle loop="1">
<scheme>GFS_time_vary_pre</scheme>
<scheme>GFS_rrtmgp_setup</scheme>
<scheme>GFS_rad_time_vary</scheme>
<scheme>GFS_phys_time_vary</scheme>
</subcycle>
</group>
<group name="radiation">
<subcycle loop="1">
<scheme>GFS_suite_interstitial_rad_reset</scheme>
<scheme>GFS_rrtmgp_pre</scheme>
<scheme>GFS_rrtmgp_gfdlmp_pre</scheme>
<scheme>GFS_cloud_diagnostics</scheme>
<scheme>GFS_rrtmgp_sw_pre</scheme>
<scheme>rrtmgp_sw_gas_optics</scheme>
<scheme>rrtmgp_sw_aerosol_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_aerosol_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>
</subcycle>
</group>
<group name="physics">
<subcycle loop="1">
<scheme>GFS_suite_interstitial_phys_reset</scheme>
<scheme>GFS_suite_stateout_reset</scheme>
<scheme>get_prs_fv3</scheme>
<scheme>GFS_suite_interstitial_1</scheme>
<scheme>GFS_surface_generic_pre</scheme>
<scheme>GFS_surface_composites_pre</scheme>
<scheme>dcyc2t3</scheme>
<scheme>GFS_surface_composites_inter</scheme>
<scheme>GFS_suite_interstitial_2</scheme>
</subcycle>
<!-- Surface iteration loop -->
<subcycle loop="2">
<scheme>sfc_diff</scheme>
<scheme>GFS_surface_loop_control_part1</scheme>
<scheme>sfc_nst_pre</scheme>
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>lsm_noah</scheme>
<scheme>sfc_sice</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
<!-- End of surface iteration loop -->
<subcycle loop="1">
<scheme>GFS_surface_composites_post</scheme>
<scheme>sfc_diag</scheme>
<scheme>sfc_diag_post</scheme>
<scheme>GFS_surface_generic_post</scheme>
<scheme>GFS_PBL_generic_pre</scheme>
<scheme>satmedmfvdifq</scheme>
<scheme>GFS_PBL_generic_post</scheme>
<scheme>GFS_GWD_generic_pre</scheme>
<scheme>cires_ugwp</scheme>
<scheme>cires_ugwp_post</scheme>
<scheme>GFS_GWD_generic_post</scheme>
<scheme>rayleigh_damp</scheme>
<scheme>GFS_suite_stateout_update</scheme>
<scheme>ozphys_2015</scheme>
<scheme>h2ophys</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
<scheme>GFS_DCNV_generic_pre</scheme>
<scheme>samfdeepcnv</scheme>
<scheme>GFS_DCNV_generic_post</scheme>
<scheme>GFS_SCNV_generic_pre</scheme>
<scheme>samfshalcnv</scheme>
<scheme>GFS_SCNV_generic_post</scheme>
<scheme>GFS_suite_interstitial_4</scheme>
<scheme>cnvc90</scheme>
<scheme>GFS_MP_generic_pre</scheme>
<scheme>gfdl_cloud_microphys</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
</subcycle>
</group>
<group name="stochastics">
<subcycle loop="1">
<scheme>GFS_stochastics</scheme>
<scheme>phys_tend</scheme>
</subcycle>
</group>
<!-- <finalize></finalize> -->
</suite>
Loading

0 comments on commit 1959bde

Please sign in to comment.