Skip to content

Commit

Permalink
Add/update HWRF physics (#188)
Browse files Browse the repository at this point in the history
HWRF physics implementation in CCPP
- addition of new CCPP schemes to ccpp_prebuild_config.py
- update of suite definition files related to HWRF physics
- update of GFS_typdefs.{F90,meta} with new/modified variables for HWRF physics
- additional logic in FV3GFS_io.F90 for HWRF Noah LSM

Co-authored-by: Jun.Wang <Jun.Wang@noaa.gov>
Co-authored-by: Jili Dong <Jili.Dong@noaa.gov>
Co-authored-by: Bin Liu <Bin.Liu@noaa.gov>
Co-authored-by: Chunxi.Zhang-NOAA <Chunxi.Zhang@noaa.gov>
Co-authored-by: andrew.hazelton <andrew.hazelton@noaa.gov>
Co-authored-by: Jili.Dong@noaa.gov <Jili.Dong@v72a1.ncep.noaa.gov>
Co-authored-by: ZhanZhang-NOAA <zhan.zhang@noaa.gov>
Co-authored-by: Grant Firl <grantf@ucar.edu>
Co-authored-by: Man.Zhang <Man.Zhang@noaa.gov>
Co-authored-by: Dom Heinzeller <dom.heinzeller@noaa.gov>
  • Loading branch information
11 people authored Nov 5, 2020
1 parent 6e2421c commit 5530a85
Show file tree
Hide file tree
Showing 10 changed files with 755 additions and 98 deletions.
2 changes: 1 addition & 1 deletion atmos_cubed_sphere
10 changes: 6 additions & 4 deletions ccpp/config/ccpp_prebuild_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@
'ccpp/physics/physics/get_prs_fv3.F90',
'ccpp/physics/physics/gfdl_cloud_microphys.F90',
'ccpp/physics/physics/gfdl_fv_sat_adj.F90',
'ccpp/physics/physics/gfdl_sfc_layer.F90',
'ccpp/physics/physics/gscond.f',
'ccpp/physics/physics/gwdc.f',
'ccpp/physics/physics/gwdps.f',
Expand All @@ -138,7 +139,6 @@
'ccpp/physics/physics/cu_gf_driver.F90',
'ccpp/physics/physics/cu_gf_driver_post.F90',
'ccpp/physics/physics/moninedmf.f',
'ccpp/physics/physics/moninedmf_hafs.f',
'ccpp/physics/physics/moninshoc.f',
'ccpp/physics/physics/satmedmfvdif.F',
'ccpp/physics/physics/satmedmfvdifq.F',
Expand All @@ -157,8 +157,8 @@
'ccpp/physics/physics/ozphys_2015.f',
'ccpp/physics/physics/precpd.f',
'ccpp/physics/physics/phys_tend.F90',
'ccpp/physics/physics/radlw_main.f',
'ccpp/physics/physics/radsw_main.f',
'ccpp/physics/physics/radlw_main.F90',
'ccpp/physics/physics/radsw_main.F90',
'ccpp/physics/physics/rascnv.F90',
'ccpp/physics/physics/rayleigh_damp.f',
'ccpp/physics/physics/rrtmg_lw_post.F90',
Expand All @@ -172,12 +172,14 @@
'ccpp/physics/physics/sfc_cice.f',
'ccpp/physics/physics/sfc_diff.f',
'ccpp/physics/physics/sfc_drv.f',
'ccpp/physics/physics/sfc_noah_wrfv4_interstitial.F90',
'ccpp/physics/physics/sfc_noah_wrfv4.F90',
'ccpp/physics/physics/sfc_noahmp_drv.f',
'ccpp/physics/physics/flake_driver.F90',
'ccpp/physics/physics/sfc_nst.f',
'ccpp/physics/physics/sfc_ocean.F',
'ccpp/physics/physics/sfc_sice.f',
# HAFSFER_HIRES
# HAFS FER_HIRES
'ccpp/physics/physics/mp_fer_hires.F90',
# RRTMGP
'ccpp/physics/physics/rrtmgp_lw_gas_optics.F90',
Expand Down
2 changes: 1 addition & 1 deletion ccpp/driver/CCPP_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ subroutine CCPP_step (step, nblks, ierr)
implicit none

character(len=*), intent(in) :: step
integer, target, intent(in) :: nblks
integer, intent(in) :: nblks
integer, intent(out) :: ierr
! Local variables
integer :: nb, nt, ntX
Expand Down
2 changes: 1 addition & 1 deletion ccpp/physics
Submodule physics updated 46 files
+0 −22 CMakeLists.txt
+114 −30 physics/GFS_rrtmg_pre.F90
+17 −0 physics/GFS_rrtmg_pre.meta
+2 −1 physics/GFS_rrtmg_setup.F90
+5 −5 physics/GFS_rrtmg_setup.meta
+4 −4 physics/GFS_rrtmgp_setup.meta
+18 −2 physics/GFS_suite_interstitial.F90
+41 −0 physics/GFS_suite_interstitial.meta
+1 −0 physics/GFS_surface_composites.F90
+6 −2 physics/GFS_surface_generic.F90
+32 −35 physics/GFS_time_vary_pre.fv3.F90
+33 −35 physics/GFS_time_vary_pre.scm.F90
+109 −0 physics/HWRF_mcica_random_numbers.F90
+304 −0 physics/HWRF_mersenne_twister.F90
+2 −2 physics/docs/ccpp_doxyfile
+ physics/docs/img/FA_DRI.png
+ physics/docs/img/FA_MP_schematic.png
+ physics/docs/img/FA_NOR_EQ.png
+20 −0 physics/docs/library.bib
+91 −0 physics/docs/pdftxt/HWRF_FAMP.txt
+1,823 −0 physics/gfdl_sfc_layer.F90
+816 −0 physics/gfdl_sfc_layer.meta
+258 −194 physics/module_MP_FER_HIRES.F90
+11 −10 physics/module_mp_thompson.F90
+733 −0 physics/module_sf_exchcoef.f90
+4,793 −0 physics/module_sf_noahlsm.F90
+1,285 −0 physics/module_sf_noahlsm_glacial_only.F90
+322 −76 physics/moninedmf.f
+41 −0 physics/moninedmf.meta
+0 −1,553 physics/moninedmf_hafs.f
+0 −524 physics/moninedmf_hafs.meta
+70 −90 physics/mp_fer_hires.F90
+21 −0 physics/mp_fer_hires.meta
+1,140 −272 physics/radiation_clouds.f
+2,111 −10 physics/radlw_main.F90
+10 −10 physics/radlw_main.meta
+776 −11 physics/radsw_main.F90
+10 −10 physics/radsw_main.meta
+1 −1 physics/samfdeepcnv.f
+14 −1 physics/sfc_drv.f
+11 −0 physics/sfc_drv_ruc.F90
+261 −0 physics/sfc_noah_wrfv4.F90
+770 −0 physics/sfc_noah_wrfv4.meta
+758 −0 physics/sfc_noah_wrfv4_interstitial.F90
+1,110 −0 physics/sfc_noah_wrfv4_interstitial.meta
+13 −0 physics/sfc_noahmp_drv.f
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="FV3_HAFS_ferhires_update_moist" version="1">
<suite name="HAFS_v0_hwrf" version="1">
<!-- <init></init> -->
<group name="time_vary">
<subcycle loop="1">
Expand All @@ -14,12 +14,12 @@
<subcycle loop="1">
<scheme>GFS_suite_interstitial_rad_reset</scheme>
<scheme>GFS_rrtmg_pre</scheme>
<scheme>rrtmg_sw_pre</scheme>
<scheme>rrtmg_sw</scheme>
<scheme>rrtmg_sw_post</scheme>
<scheme>rrtmg_lw_pre</scheme>
<scheme>rrtmg_lw</scheme>
<scheme>rrtmg_lw_post</scheme>
<scheme>rrtmg_sw_pre</scheme>
<scheme>rrtmg_sw</scheme>
<scheme>rrtmg_sw_post</scheme>
<scheme>GFS_rrtmg_post</scheme>
</subcycle>
</group>
Expand All @@ -37,12 +37,14 @@
</subcycle>
<!-- Surface iteration loop -->
<subcycle loop="2">
<scheme>sfc_diff</scheme>
<scheme>gfdl_sfc_layer</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_noah_wrfv4_pre</scheme>
<scheme>sfc_noah_wrfv4</scheme>
<scheme>sfc_noah_wrfv4_post</scheme>
<scheme>sfc_sice</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
</subcycle>
Expand All @@ -61,13 +63,15 @@
<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>GFS_DCNV_generic_pre</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
<scheme>GFS_DCNV_generic_pre</scheme>
<!-- <scheme>samfdeepcnv</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>
Expand Down
94 changes: 94 additions & 0 deletions ccpp/suites/suite_HAFS_v0_hwrf_thompson.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="HAFS_v0_hwrf_thompson" version="1">
<!-- <init></init> -->
<group name="time_vary">
<subcycle loop="1">
<scheme>GFS_time_vary_pre</scheme>
<scheme>GFS_rrtmg_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>sgscloud_radpre</scheme> -->
<scheme>GFS_rrtmg_pre</scheme>
<scheme>rrtmg_lw_pre</scheme>
<scheme>rrtmg_lw</scheme>
<scheme>rrtmg_lw_post</scheme>
<scheme>rrtmg_sw_pre</scheme>
<scheme>rrtmg_sw</scheme>
<scheme>rrtmg_sw_post</scheme>
<scheme>GFS_rrtmg_post</scheme>
<!-- <scheme>sgscloud_radpost</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>gfdl_sfc_layer</scheme>
<scheme>GFS_surface_loop_control_part1</scheme>
<scheme>sfc_nst_pre</scheme>
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>sfc_noah_wrfv4_pre</scheme>
<scheme>sfc_noah_wrfv4</scheme>
<scheme>sfc_noah_wrfv4_post</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>hedmf</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>GFS_DCNV_generic_pre</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</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>mp_thompson_pre</scheme>
<scheme>mp_thompson</scheme>
<scheme>mp_thompson_post</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
</subcycle>
</group>
<group name="stochastics">
<subcycle loop="1">
<scheme>GFS_stochastics</scheme>
</subcycle>
</group>
<!-- <finalize></finalize> -->
</suite>
2 changes: 1 addition & 1 deletion gfsphysics/GFS_layer/GFS_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -3702,7 +3702,7 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop
endif

!! Cloud effective radii from Microphysics
!if (Model%imp_physics == Model%imp_physics_thompson .or. Model%imp_physics == Model%imp_physics_wsm6) then
!if (Model%imp_physics == Model%imp_physics_thompson .or. Model%imp_physics == Model%imp_physics_wsm6 .or. Model%imp_physics == Model%imp_physics_fer_hires) then
! idx = idx + 1
! ExtDiag(idx)%axes = 3
! ExtDiag(idx)%name = 'cleffr'
Expand Down
Loading

0 comments on commit 5530a85

Please sign in to comment.