diff --git a/atmos_cubed_sphere b/atmos_cubed_sphere
index 27d062906..27ad40e1e 160000
--- a/atmos_cubed_sphere
+++ b/atmos_cubed_sphere
@@ -1 +1 @@
-Subproject commit 27d0629067eb5c93ea5e5f518f42e5c4ee64f5e3
+Subproject commit 27ad40e1e6e548a89a029cb7646eac9c77265d1c
diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py
index cb9a0ade4..a1aa5cd16 100755
--- a/ccpp/config/ccpp_prebuild_config.py
+++ b/ccpp/config/ccpp_prebuild_config.py
@@ -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',
@@ -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',
diff --git a/ccpp/driver/makefile b/ccpp/driver/makefile
index ccbae2c50..c64441135 100644
--- a/ccpp/driver/makefile
+++ b/ccpp/driver/makefile
@@ -64,8 +64,6 @@ clean:
MKDEPENDS = ../../mkDepends.pl
include ../../conf/make.rules
-include ./depend
-
# do not include 'depend' file if the target contains string 'clean'
ifneq (clean,$(findstring clean,$(MAKECMDGOALS)))
-include depend
diff --git a/ccpp/framework b/ccpp/framework
index 5e648bb31..f2bceb3d0 160000
--- a/ccpp/framework
+++ b/ccpp/framework
@@ -1 +1 @@
-Subproject commit 5e648bb3180c3e36942fca597534ad1276c8271f
+Subproject commit f2bceb3d0739e443812e597ba2cd81d823133dfd
diff --git a/ccpp/physics b/ccpp/physics
index 898db7907..30b3ba49e 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit 898db7907e75158869ca1603dd885693e71bcd72
+Subproject commit 30b3ba49e4450940f73456d8b983b1f5e276c9d3
diff --git a/ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml b/ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml
index 89f21fd7c..fac22314c 100644
--- a/ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml
+++ b/ccpp/suites/suite_FV3_GFS_2017_fv3wam.xml
@@ -60,9 +60,9 @@
rayleigh_damp
GFS_suite_stateout_update
ozphys
- GFS_DCNV_generic_pre
get_phi_fv3
GFS_suite_interstitial_3
+ GFS_DCNV_generic_pre
samfdeepcnv
GFS_DCNV_generic_post
GFS_SCNV_generic_pre
diff --git a/ccpp/suites/suite_FV3_GSD_SAR_v1.xml b/ccpp/suites/suite_FV3_GFS_v16beta_flake.xml
similarity index 79%
rename from ccpp/suites/suite_FV3_GSD_SAR_v1.xml
rename to ccpp/suites/suite_FV3_GFS_v16beta_flake.xml
index d4558ea8e..dec1a76a2 100644
--- a/ccpp/suites/suite_FV3_GSD_SAR_v1.xml
+++ b/ccpp/suites/suite_FV3_GFS_v16beta_flake.xml
@@ -1,7 +1,12 @@
-
+
+
+
+ fv_sat_adj
+
+
GFS_time_vary_pre
@@ -13,14 +18,12 @@
GFS_suite_interstitial_rad_reset
- sgscloud_radpre
GFS_rrtmg_pre
rrtmg_sw_pre
rrtmg_sw
rrtmg_sw_post
rrtmg_lw_pre
rrtmg_lw
- sgscloud_radpost
rrtmg_lw_post
GFS_rrtmg_post
@@ -45,6 +48,7 @@
sfc_nst
sfc_nst_post
lsm_noah
+ flake_driver
sfc_sice
GFS_surface_loop_control_part2
@@ -54,7 +58,9 @@
sfc_diag
sfc_diag_post
GFS_surface_generic_post
- mynnedmf_wrapper
+ GFS_PBL_generic_pre
+ satmedmfvdifq
+ GFS_PBL_generic_post
GFS_GWD_generic_pre
cires_ugwp
cires_ugwp_post
@@ -65,11 +71,16 @@
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
+ GFS_DCNV_generic_pre
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
GFS_suite_interstitial_4
+ cnvc90
GFS_MP_generic_pre
- mp_thompson_pre
- mp_thompson
- mp_thompson_post
+ gfdl_cloud_microphys
GFS_MP_generic_post
maximum_hourly_diagnostics
diff --git a/ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml b/ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml
index 72f1b659f..f2da9d4e8 100644
--- a/ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml
+++ b/ccpp/suites/suite_FV3_GSD_noah_mynnsfc.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml b/ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml
index 50680a893..f1c22a774 100644
--- a/ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml
+++ b/ccpp/suites/suite_FV3_GSD_v0_mynnsfc.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/ccpp/suites/suite_FV3_RRFS_v0.xml b/ccpp/suites/suite_FV3_RRFS_v0.xml
deleted file mode 100644
index a53479449..000000000
--- a/ccpp/suites/suite_FV3_RRFS_v0.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
- GFS_time_vary_pre
- GFS_rrtmg_setup
- GFS_rad_time_vary
- GFS_phys_time_vary
-
-
-
-
- GFS_suite_interstitial_rad_reset
- sgscloud_radpre
- GFS_rrtmg_pre
- rrtmg_sw_pre
- rrtmg_sw
- rrtmg_sw_post
- rrtmg_lw_pre
- rrtmg_lw
- sgscloud_radpost
- rrtmg_lw_post
- GFS_rrtmg_post
-
-
-
-
- GFS_suite_interstitial_phys_reset
- GFS_suite_stateout_reset
- get_prs_fv3
- GFS_suite_interstitial_1
- GFS_surface_generic_pre
- GFS_surface_composites_pre
- dcyc2t3
- GFS_surface_composites_inter
- GFS_suite_interstitial_2
-
-
-
- sfc_diff
- GFS_surface_loop_control_part1
- sfc_nst_pre
- sfc_nst
- sfc_nst_post
- noahmpdrv
- sfc_sice
- GFS_surface_loop_control_part2
-
-
-
- GFS_surface_composites_post
- sfc_diag
- sfc_diag_post
- GFS_surface_generic_post
- mynnedmf_wrapper
- GFS_GWD_generic_pre
- cires_ugwp
- cires_ugwp_post
- GFS_GWD_generic_post
- rayleigh_damp
- GFS_suite_stateout_update
- ozphys_2015
- h2ophys
- get_phi_fv3
- GFS_suite_interstitial_3
- GFS_suite_interstitial_4
- GFS_MP_generic_pre
- mp_thompson_pre
- mp_thompson
- mp_thompson_post
- GFS_MP_generic_post
- maximum_hourly_diagnostics
-
-
-
-
- GFS_stochastics
-
-
-
-
diff --git a/ccpp/suites/suite_FV3_RRFS_v1beta.xml b/ccpp/suites/suite_FV3_RRFS_v1beta.xml
index cbd19222c..3bff7b39d 100644
--- a/ccpp/suites/suite_FV3_RRFS_v1beta.xml
+++ b/ccpp/suites/suite_FV3_RRFS_v1beta.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/gfsphysics/GFS_layer/GFS_typedefs.F90 b/gfsphysics/GFS_layer/GFS_typedefs.F90
index 59bcb9a50..70a565a36 100644
--- a/gfsphysics/GFS_layer/GFS_typedefs.F90
+++ b/gfsphysics/GFS_layer/GFS_typedefs.F90
@@ -140,7 +140,6 @@ module GFS_typedefs
#ifdef CCPP
!--- restart information
logical :: restart !< flag whether this is a coldstart (.false.) or a warmstart/restart (.true.)
- logical :: cycling !< flag whether this is a coldstart (.false.) or a cycled run (.true.)
!--- hydrostatic/non-hydrostatic flag
logical :: hydrostatic !< flag whether this is a hydrostatic or non-hydrostatic run
#endif
@@ -235,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
@@ -803,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)
@@ -1125,7 +1128,6 @@ module GFS_typedefs
#ifdef CCPP
logical :: first_time_step !< flag signaling first time step for time integration routine
logical :: restart !< flag whether this is a coldstart (.false.) or a warmstart/restart (.true.)
- logical :: cycling !< flag whether this is a coldstart (.false.) or a cycled run (.true.)
logical :: hydrostatic !< flag whether this is a hydrostatic or non-hydrostatic run
#endif
integer :: jdat(1:8) !< current forecast date and time
@@ -2208,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))
@@ -2225,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
@@ -2890,7 +2894,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
logical :: aux2d_time_avg(1:naux2dmax) = .false. !< flags for time averaging of auxiliary 2d arrays
logical :: aux3d_time_avg(1:naux3dmax) = .false. !< flags for time averaging of auxiliary 3d arrays
- logical :: cycling = .false. !< flag to activate extra cycling procedures
real(kind=kind_phys) :: fhcyc = 0. !< frequency for surface data cycling (hours)
integer :: thermodyn_id = 1 !< valid for GFS only for get_prs/phi
integer :: sfcpress_id = 1 !< valid for GFS only for get_prs/phi
@@ -3059,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)
@@ -3352,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, &
@@ -3796,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
@@ -4164,7 +4177,6 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
#ifdef CCPP
Model%first_time_step = .true.
Model%restart = restart
- Model%cycling = cycling
Model%hydrostatic = hydrostatic
#endif
Model%jdat(1:8) = jdat(1:8)
@@ -4336,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)
@@ -4920,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
@@ -5128,7 +5147,6 @@ subroutine control_print(Model)
print *, ' sec : ', Model%sec
print *, ' first_time_step : ', Model%first_time_step
print *, ' restart : ', Model%restart
- print *, ' cycling : ', Model%cycling
print *, ' hydrostatic : ', Model%hydrostatic
#endif
endif
@@ -5783,7 +5801,6 @@ end subroutine diag_create
subroutine diag_rad_zero(Diag, Model)
class(GFS_diag_type) :: Diag
type(GFS_control_type), intent(in) :: Model
- integer :: i
Diag%fluxr = zero
Diag%topfsw%upfxc = zero
@@ -5806,7 +5823,6 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center)
logical,optional, intent(in) :: linit, iauwindow_center
logical set_totprcp
- integer :: i
!--- In/Out
Diag%srunoff = zero
diff --git a/gfsphysics/GFS_layer/GFS_typedefs.meta b/gfsphysics/GFS_layer/GFS_typedefs.meta
index 337b3fce8..49023a1df 100644
--- a/gfsphysics/GFS_layer/GFS_typedefs.meta
+++ b/gfsphysics/GFS_layer/GFS_typedefs.meta
@@ -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
@@ -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
@@ -4010,7 +4023,7 @@
[slag]
standard_name = equation_of_time
long_name = equation of time (radian)
- units = radians
+ units = radian
dimensions = ()
type = real
kind = kind_phys
@@ -4074,12 +4087,6 @@
units = flag
dimensions = ()
type = logical
-[cycling]
- standard_name = flag_for_cycling
- long_name = flag for cycling or coldstart
- units = flag
- dimensions = ()
- type = logical
[hydrostatic]
standard_name = flag_for_hydrostatic_solver
long_name = flag for hydrostatic solver from dynamics
@@ -4319,14 +4326,14 @@
[xlat]
standard_name = latitude
long_name = latitude
- units = radians
+ units = radian
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
[xlon]
standard_name = longitude
long_name = longitude
- units = radians
+ units = radian
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
@@ -4345,9 +4352,9 @@
type = real
kind = kind_phys
[xlat_d]
- standard_name = latitude_degree
- long_name = latitude in degrees
- units = degree
+ standard_name = latitude_in_degree
+ long_name = latitude in degree north
+ units = degree_north
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
@@ -8150,7 +8157,7 @@
type = real
kind = kind_phys
[save_tcp]
- standard_name = air_temperature_save_from_cumulus_paramterization
+ standard_name = air_temperature_save_from_convective_parameterization
long_name = air temperature after cumulus parameterization
units = K
dimensions = (horizontal_dimension,vertical_dimension)
@@ -8344,7 +8351,7 @@
[theta]
standard_name = angle_from_east_of_maximum_subgrid_orographic_variations
long_name = angle with_respect to east of maximum subgrid orographic variations
- units = degrees
+ units = degree
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
@@ -9482,7 +9489,7 @@
[con_pi]
standard_name = pi
long_name = ratio of a circle's circumference to its diameter
- units = radians
+ units = none
dimensions = ()
type = real
kind = kind_phys
@@ -9502,7 +9509,7 @@
kind = kind_phys
[con_t0c]
standard_name = temperature_at_zero_celsius
- long_name = temperature at 0 degrees Celsius
+ long_name = temperature at 0 degree Celsius
units = K
dimensions = ()
type = real
diff --git a/gfsphysics/makefile b/gfsphysics/makefile
index 9f25780c8..2ae58e317 100644
--- a/gfsphysics/makefile
+++ b/gfsphysics/makefile
@@ -266,8 +266,6 @@ clean:
MKDEPENDS = ../mkDepends.pl
include ../conf/make.rules
-include ./depend
-
# do not include 'depend' file if the target contains string 'clean'
ifneq (clean,$(findstring clean,$(MAKECMDGOALS)))
-include depend
diff --git a/io/FV3GFS_io.F90 b/io/FV3GFS_io.F90
index 4b2738b23..b86cd0295 100644
--- a/io/FV3GFS_io.F90
+++ b/io/FV3GFS_io.F90
@@ -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
diff --git a/ipd/makefile b/ipd/makefile
index 88cc6cbd1..ed4a2749b 100644
--- a/ipd/makefile
+++ b/ipd/makefile
@@ -51,8 +51,6 @@ clean:
MKDEPENDS = ../mkDepends.pl
include ../conf/make.rules
-include ./depend
-
# do not include 'depend' file if the target contains string 'clean'
ifneq (clean,$(findstring clean,$(MAKECMDGOALS)))
-include depend