Skip to content

Commit

Permalink
MYNN sfclay (RAP suite) restart reproducibility, P8 suite definition …
Browse files Browse the repository at this point in the history
…files (NCAR#455)

* Fix uninitialized variable zmtnblck in ccpp/data/GFS_typedefs.F90
* Fix typo in CCPP standard name for ncnvwind in ccpp/data/GFS_typedefs.meta
* Add ten 2d variables required for MYNNSFC restart reproducibility to ccpp/driver/GFS_restart.F90
* create initial p8 suites, P8 initial SDFs as copies of FV3_GFS_v16_coupled_nsstNoahmpUGWPv1
and FV3_GFS_v16_nsstNoahmpUGWPv1

Co-authored-by: Denise Worthen <denise.worthen@noaa.gov>
  • Loading branch information
climbfuji and DeniseWorthen authored Jan 7, 2022
1 parent 8198cee commit 7eb0ee2
Show file tree
Hide file tree
Showing 6 changed files with 172 additions and 27 deletions.
4 changes: 2 additions & 2 deletions ccpp/data/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1650,8 +1650,7 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: tdomzr (:) => null() !< dominant accumulated freezing rain type
real (kind=kind_phys), pointer :: tdomip (:) => null() !< dominant accumulated sleet type
real (kind=kind_phys), pointer :: tdoms (:) => null() !< dominant accumulated snow type

real (kind=kind_phys), pointer :: zmtnblck(:) => null() !<mountain blocking evel
real (kind=kind_phys), pointer :: zmtnblck(:) => null() !<mountain blocking level

! dtend/dtidxt: Multitudinous 3d tendencies in a 4D array: (i,k,1:100+ntrac,nprocess)
! Sparse in outermost two dimensions. dtidx(1:100+ntrac,nprocess) maps to dtend
Expand Down Expand Up @@ -6779,6 +6778,7 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center)
Diag%tdomzr = zero
Diag%tdomip = zero
Diag%tdoms = zero
Diag%zmtnblck = zero

if(Model%lsm == Model%lsm_noahmp)then
Diag%paha = zero
Expand Down
6 changes: 3 additions & 3 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -5058,7 +5058,7 @@
dimensions = ()
type = integer
[ncnvwind]
standard_name = index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convectionin_in_xy_dimensioned_restart_array
standard_name = index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convection_in_xy_dimensioned_restart_array
long_name = the index of surface wind enhancement due to convection in phy f2d
units =
dimensions = ()
Expand Down Expand Up @@ -5900,14 +5900,14 @@
type = real
kind = kind_phys
active = (index_of_surface_air_pressure_on_previous_timestep_in_xyz_dimensioned_restart_array > 0)
[phy_f2d(:,index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convectionin_in_xy_dimensioned_restart_array)]
[phy_f2d(:,index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convection_in_xy_dimensioned_restart_array)]
standard_name = enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convection
long_name = surface wind enhancement due to convection
units = m s-1
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
active = (index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convectionin_in_xy_dimensioned_restart_array > 0)
active = (index_of_enhancement_to_wind_speed_at_surface_adjacent_layer_due_to_convection_in_xy_dimensioned_restart_array > 0)
[phy_f3d(:,:,index_of_air_temperature_two_timesteps_back_in_xyz_dimensioned_restart_array)]
standard_name = air_temperature_two_timesteps_back
long_name = air temperature two timesteps back
Expand Down
64 changes: 62 additions & 2 deletions ccpp/driver/GFS_restart.F90
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ subroutine GFS_restart_populate (Restart, Model, Statein, Stateout, Sfcprop, &
endif
! MYNN SFC
if (Model%do_mynnsfclay) then
Restart%num2d = Restart%num2d + 1
Restart%num2d = Restart%num2d + 13
endif
! Thompson aerosol-aware
if (Model%imp_physics == Model%imp_physics_thompson .and. Model%ltaerosol) then
Expand All @@ -130,7 +130,7 @@ subroutine GFS_restart_populate (Restart, Model, Statein, Stateout, Sfcprop, &
if (Model%imfdeepcnv == 3) then
Restart%num3d = Restart%num3d + 3
endif
! MYNN PBL
! MYNN PBL
if (Model%do_mynnedmf) then
Restart%num3d = Restart%num3d + 9
endif
Expand Down Expand Up @@ -305,6 +305,66 @@ subroutine GFS_restart_populate (Restart, Model, Statein, Stateout, Sfcprop, &
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%uustar(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_hpbl'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Tbd(nb)%hpbl(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_ustm'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%ustm(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_zol'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%zol(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_mol'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%mol(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_flhc'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%flhc(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_flqc'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%flqc(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_chs2'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%chs2(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_cqs2'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%cqs2(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_lh'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%lh(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_hflx'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%hflx(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_evap'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%evap(:)
enddo
num = num + 1
Restart%name2d(num) = 'mynn_2d_qss'
do nb = 1,nblks
Restart%data(nb,num)%var2p => Sfcprop(nb)%qss(:)
enddo
endif
! Thompson aerosol-aware
if (Model%imp_physics == Model%imp_physics_thompson .and. Model%ltaerosol) then
Expand Down
2 changes: 1 addition & 1 deletion ccpp/physics
95 changes: 95 additions & 0 deletions ccpp/suites/suite_FV3_GFS_v16_coupled_p8.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="FV3_GFS_v16_coupled_p8" version="1">
<!-- <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_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>GFS_rrtmg_pre</scheme>
<scheme>GFS_radiation_surface</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>GFS_rrtmg_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>noahmpdrv</scheme>
<scheme>sfc_cice</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>ugwpv1_gsldrag</scheme>
<scheme>ugwpv1_gsldrag_post</scheme>
<scheme>GFS_GWD_generic_post</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>
<scheme>phys_tend</scheme>
</subcycle>
</group>
<group name="stochastics">
<subcycle loop="1">
<scheme>GFS_stochastics</scheme>
</subcycle>
</group>
<!-- <finalize></finalize> -->
</suite>
28 changes: 9 additions & 19 deletions ccpp/suites/suite_FV3_GFS_v16_p8.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,23 @@
<group name="time_vary">
<subcycle loop="1">
<scheme>GFS_time_vary_pre</scheme>
<scheme>GFS_rrtmgp_setup</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>GFS_rrtmgp_pre</scheme>
<scheme>GFS_rrtmg_pre</scheme>
<scheme>GFS_radiation_surface</scheme>
<scheme>GFS_rrtmgp_gfdlmp_pre</scheme>
<scheme>GFS_rrtmgp_cloud_overlap_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>
<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>GFS_rrtmg_post</scheme>
</subcycle>
</group>
<group name="physics">
Expand Down

0 comments on commit 7eb0ee2

Please sign in to comment.