Skip to content

Commit

Permalink
This is EMC flake model (#141)
Browse files Browse the repository at this point in the history
* This is EMC flake model
* Updated .gitmodules file under FV3
* Removed the reset of lake fraction and lake depth statements
* point to ccpp physics branch flake
* Reset lkm to 0
* Swapped the order of calls in the suite file
* update to the latest ccpp/physics branch
* Revert change to .gitmodules and update submodule pointer for ccpp-physics
  • Loading branch information
YihuaWu-NOAA authored Jul 20, 2020
1 parent f053db2 commit 9e5074e
Show file tree
Hide file tree
Showing 6 changed files with 136 additions and 1 deletion.
2 changes: 2 additions & 0 deletions ccpp/config/ccpp_prebuild_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@
'FV3/ccpp/physics/physics/sfcsub.F',
'FV3/ccpp/physics/physics/sflx.f',
'FV3/ccpp/physics/physics/set_soilveg.f',
'FV3/ccpp/physics/physics/flake.F90',
'FV3/ccpp/physics/physics/surface_perturbation.F90',
'FV3/ccpp/physics/physics/cu_gf_deep.F90',
'FV3/ccpp/physics/physics/cu_gf_sh.F90',
Expand Down Expand Up @@ -289,6 +290,7 @@
'FV3/ccpp/physics/physics/sfc_diff.f',
'FV3/ccpp/physics/physics/sfc_drv.f',
'FV3/ccpp/physics/physics/sfc_noahmp_drv.f',
'FV3/ccpp/physics/physics/flake_driver.F90',
'FV3/ccpp/physics/physics/sfc_nst.f',
'FV3/ccpp/physics/physics/sfc_ocean.F',
'FV3/ccpp/physics/physics/sfc_sice.f',
Expand Down
94 changes: 94 additions & 0 deletions ccpp/suites/suite_FV3_GFS_v16beta_flake.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="FV3_GFS_v16beta_flake" lib="ccppphys" ver="3">
<!-- <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>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>lsm_noah</scheme>
<scheme>flake_driver</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>
</subcycle>
</group>
<!-- <finalize></finalize> -->
</suite>
23 changes: 23 additions & 0 deletions gfsphysics/GFS_layer/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: oceanfrac(:) => null() !< ocean fraction [0:1]
real (kind=kind_phys), pointer :: landfrac(:) => null() !< land fraction [0:1]
real (kind=kind_phys), pointer :: lakefrac(:) => null() !< lake fraction [0:1]
real (kind=kind_phys), pointer :: lakedepth(:) => null() !< lake depth [ m ]
real (kind=kind_phys), pointer :: tsfc (:) => null() !< surface air temperature in K
!< [tsea in gbphys.f]
real (kind=kind_phys), pointer :: tsfco (:) => null() !< sst in K
Expand Down Expand Up @@ -802,6 +803,9 @@ module GFS_typedefs

logical :: use_ufo !< flag for gcycle surface option

!--- flake model parameters
integer :: lkm !< flag for flake model

!--- tuning parameters for physical parameterizations
logical :: ras !< flag for ras convection scheme
logical :: flipv !< flag for vertical direction flip (ras)
Expand Down Expand Up @@ -2206,6 +2210,7 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
allocate (Sfcprop%oceanfrac(IM))
allocate (Sfcprop%landfrac (IM))
allocate (Sfcprop%lakefrac (IM))
allocate (Sfcprop%lakedepth(IM))
allocate (Sfcprop%tsfc (IM))
allocate (Sfcprop%tsfco (IM))
allocate (Sfcprop%tsfcl (IM))
Expand All @@ -2223,6 +2228,7 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
Sfcprop%oceanfrac = clear_val
Sfcprop%landfrac = clear_val
Sfcprop%lakefrac = clear_val
Sfcprop%lakedepth = clear_val
Sfcprop%tsfc = clear_val
Sfcprop%tsfco = clear_val
Sfcprop%tsfcl = clear_val
Expand Down Expand Up @@ -3056,6 +3062,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &

logical :: use_ufo = .false. !< flag for gcycle surface option

!--- flake model parameters
integer :: lkm = 0 !< flag for flake model

!--- tuning parameters for physical parameterizations
logical :: ras = .false. !< flag for ras convection scheme
logical :: flipv = .true. !< flag for vertical direction flip (ras)
Expand Down Expand Up @@ -3349,6 +3358,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
! Noah MP options
iopt_dveg,iopt_crs,iopt_btr,iopt_run,iopt_sfc, iopt_frz, &
iopt_inf, iopt_rad,iopt_alb,iopt_snf,iopt_tbot,iopt_stc, &

!--- lake model control
lkm, &

!--- physical parameterizations
ras, trans_trac, old_monin, cnvgwd, mstrat, moist_adj, &
cscnv, cal_pre, do_aw, do_shoc, shocaftcnv, shoc_cld, &
Expand Down Expand Up @@ -3793,6 +3806,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%isot = isot
Model%use_ufo = use_ufo

!--- flake model parameters
Model%lkm = lkm

! Noah MP options from namelist
!
Model%iopt_dveg = iopt_dveg
Expand Down Expand Up @@ -4332,6 +4348,10 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
' ignore_lake=',ignore_lake
print *,' min_lakeice=',Model%min_lakeice,' min_seaice=',Model%min_seaice, &
'min_lake_height=',Model%min_lake_height

print *, 'flake model parameters'
print *, 'lkm : ', Model%lkm

if (Model%nstf_name(1) > 0 ) then
print *,' NSSTM is active '
print *,' nstf_name(1)=',Model%nstf_name(1)
Expand Down Expand Up @@ -4916,6 +4936,9 @@ subroutine control_print(Model)

print *, ' use_ufo : ', Model%use_ufo
print *, ' '
print *, 'flake model parameters'
print *, 'lkm : ', Model%lkm
print *, ' '
print *, 'tuning parameters for physical parameterizations'
print *, ' ras : ', Model%ras
if (Model%ras) then
Expand Down
13 changes: 13 additions & 0 deletions gfsphysics/GFS_layer/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,13 @@
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
[lakedepth]
standard_name = lake_depth
long_name = lake depth
units = m
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
[tsfc]
standard_name = surface_skin_temperature
long_name = surface skin temperature
Expand Down Expand Up @@ -2975,6 +2982,12 @@
units = index
dimensions = ()
type = integer
[lkm]
standard_name = flag_for_lake_surface_scheme
long_name = flag for lake surface model
units = flag
dimensions = ()
type = integer
[ras]
standard_name = flag_for_ras_deep_convection
long_name = flag for ras convection scheme
Expand Down
3 changes: 3 additions & 0 deletions io/FV3GFS_io.F90
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,9 @@ subroutine sfc_prop_restart_read (Sfcprop, Atm_block, Model, fv_domain)
Sfcprop(nb)%oro_uf(ix) = oro_var2(i,j,16)
Sfcprop(nb)%landfrac(ix) = oro_var2(i,j,17) !land frac [0:1]
Sfcprop(nb)%lakefrac(ix) = oro_var2(i,j,18) !lake frac [0:1]

Sfcprop(nb)%lakedepth(ix) = oro_var2(i,j,19) !lake depth [m] !YWu

enddo
enddo

Expand Down

0 comments on commit 9e5074e

Please sign in to comment.