diff --git a/ccpp/config/ccpp_prebuild_config.py b/ccpp/config/ccpp_prebuild_config.py
index ea5557f0f..54b49d726 100755
--- a/ccpp/config/ccpp_prebuild_config.py
+++ b/ccpp/config/ccpp_prebuild_config.py
@@ -231,7 +231,6 @@
'FV3/ccpp/physics/physics/sfc_cice.f' : [ 'slow_physics' ],
'FV3/ccpp/physics/physics/sfc_diff.f' : [ 'slow_physics' ],
'FV3/ccpp/physics/physics/sfc_drv.f' : [ 'slow_physics' ],
- 'FV3/ccpp/physics/physics/sfc_noahmp_pre.F90' : [ 'slow_physics' ],
'FV3/ccpp/physics/physics/sfc_noahmp_drv.f' : [ 'slow_physics' ],
'FV3/ccpp/physics/physics/sfc_nst.f' : [ 'slow_physics' ],
'FV3/ccpp/physics/physics/sfc_ocean.F' : [ 'slow_physics' ],
diff --git a/ccpp/physics b/ccpp/physics
index f895fc0aa..02812f6b2 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit f895fc0aa011808cece39164443627a8126cc318
+Subproject commit 02812f6b250fe637e37089259c051d2018ad43c3
diff --git a/ccpp/suites/suite_FV3_GFS_2017_coupled.xml b/ccpp/suites/suite_FV3_GFS_2017_coupled.xml
new file mode 100644
index 000000000..d67ce3116
--- /dev/null
+++ b/ccpp/suites/suite_FV3_GFS_2017_coupled.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+ GFS_time_vary_pre
+ GFS_rrtmg_setup
+ GFS_rad_time_vary
+ GFS_phys_time_vary
+
+
+
+
+ GFS_suite_interstitial_rad_reset
+ GFS_rrtmg_pre
+ rrtmg_sw_pre
+ rrtmg_sw
+ rrtmg_sw_post
+ rrtmg_lw_pre
+ rrtmg_lw
+ 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_ocean
+ lsm_noah
+ sfc_cice
+ sfc_sice
+ GFS_surface_loop_control_part2
+
+
+
+ GFS_surface_composites_post
+ dcyc2t3_post
+ sfc_diag
+ sfc_diag_post
+ GFS_surface_generic_post
+ GFS_PBL_generic_pre
+ hedmf
+ GFS_PBL_generic_post
+ GFS_GWD_generic_pre
+ cires_ugwp
+ cires_ugwp_post
+ GFS_GWD_generic_post
+ rayleigh_damp
+ GFS_suite_stateout_update
+ ozphys
+ GFS_DCNV_generic_pre
+ get_phi_fv3
+ GFS_suite_interstitial_3
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
+ GFS_suite_interstitial_4
+ cnvc90
+ GFS_MP_generic_pre
+ zhaocarr_gscond
+ zhaocarr_precpd
+ GFS_MP_generic_post
+ maximum_hourly_diagnostics
+
+
+
+
+ GFS_stochastics
+
+
+
+
diff --git a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml
index 2868c8250..55dedad57 100644
--- a/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml
+++ b/ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml
@@ -47,7 +47,6 @@
sfc_nst_pre
sfc_nst
sfc_nst_post
- sfc_noahmp_pre
noahmpdrv
sfc_sice
GFS_surface_loop_control_part2
diff --git a/ccpp/suites/suite_FV3_GFS_v15.2.xml b/ccpp/suites/suite_FV3_GFS_v15.2.xml
new file mode 100644
index 000000000..efd5fc97b
--- /dev/null
+++ b/ccpp/suites/suite_FV3_GFS_v15.2.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ fv_sat_adj
+
+
+
+
+ GFS_time_vary_pre
+ GFS_rrtmg_setup
+ GFS_rad_time_vary
+ GFS_phys_time_vary
+
+
+
+
+ GFS_suite_interstitial_rad_reset
+ GFS_rrtmg_pre
+ rrtmg_sw_pre
+ rrtmg_sw
+ rrtmg_sw_post
+ rrtmg_lw_pre
+ rrtmg_lw
+ 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
+ lsm_noah
+ sfc_sice
+ GFS_surface_loop_control_part2
+
+
+
+ GFS_surface_composites_post
+ dcyc2t3_post
+ sfc_diag
+ sfc_diag_post
+ GFS_surface_generic_post
+ GFS_PBL_generic_pre
+ hedmf
+ GFS_PBL_generic_post
+ GFS_GWD_generic_pre
+ cires_ugwp
+ cires_ugwp_post
+ GFS_GWD_generic_post
+ rayleigh_damp
+ GFS_suite_stateout_update
+ ozphys_2015
+ h2ophys
+ GFS_DCNV_generic_pre
+ get_phi_fv3
+ GFS_suite_interstitial_3
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
+ GFS_suite_interstitial_4
+ cnvc90
+ GFS_MP_generic_pre
+ gfdl_cloud_microphys
+ GFS_MP_generic_post
+ maximum_hourly_diagnostics
+
+
+
+
+ GFS_stochastics
+
+
+
+
diff --git a/ccpp/suites/suite_FV3_GFS_v16beta.xml b/ccpp/suites/suite_FV3_GFS_v16beta.xml
new file mode 100644
index 000000000..7f53d7f6f
--- /dev/null
+++ b/ccpp/suites/suite_FV3_GFS_v16beta.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ fv_sat_adj
+
+
+
+
+ GFS_time_vary_pre
+ GFS_rrtmg_setup
+ GFS_rad_time_vary
+ GFS_phys_time_vary
+
+
+
+
+ GFS_suite_interstitial_rad_reset
+ GFS_rrtmg_pre
+ rrtmg_sw_pre
+ rrtmg_sw
+ rrtmg_sw_post
+ rrtmg_lw_pre
+ rrtmg_lw
+ 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
+ lsm_noah
+ sfc_sice
+ GFS_surface_loop_control_part2
+
+
+
+ GFS_surface_composites_post
+ dcyc2t3_post
+ sfc_diag
+ sfc_diag_post
+ GFS_surface_generic_post
+ GFS_PBL_generic_pre
+ satmedmfvdifq
+ GFS_PBL_generic_post
+ GFS_GWD_generic_pre
+ cires_ugwp
+ cires_ugwp_post
+ GFS_GWD_generic_post
+ rayleigh_damp
+ GFS_suite_stateout_update
+ ozphys_2015
+ h2ophys
+ GFS_DCNV_generic_pre
+ get_phi_fv3
+ GFS_suite_interstitial_3
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
+ GFS_suite_interstitial_4
+ cnvc90
+ GFS_MP_generic_pre
+ gfdl_cloud_microphys
+ GFS_MP_generic_post
+ maximum_hourly_diagnostics
+
+
+
+
+ GFS_stochastics
+
+
+
+
diff --git a/gfsphysics/GFS_layer/GFS_driver.F90 b/gfsphysics/GFS_layer/GFS_driver.F90
index bea7f3987..28695eb5e 100644
--- a/gfsphysics/GFS_layer/GFS_driver.F90
+++ b/gfsphysics/GFS_layer/GFS_driver.F90
@@ -460,7 +460,7 @@ subroutine GFS_initialize (Model, Statein, Stateout, Sfcprop, &
call cires_ugwp_init(Model%me, Model%master, Model%nlunit, Init_parm%logunit, &
Model%fn_nml, Model%lonr, Model%latr, Model%levs, &
Init_parm%ak, Init_parm%bk, p_ref, Model%dtp, &
- Model%cdmbgwd, Model%cgwf, Model%prslrd0, Model%ral_ts)
+ Model%cdmbgwd(1:2), Model%cgwf, Model%prslrd0, Model%ral_ts)
endif
#endif
diff --git a/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/gfsphysics/GFS_layer/GFS_physics_driver.F90
index a18422c43..4e34d5b39 100644
--- a/gfsphysics/GFS_layer/GFS_physics_driver.F90
+++ b/gfsphysics/GFS_layer/GFS_physics_driver.F90
@@ -576,10 +576,6 @@ subroutine GFS_physics_driver &
real(kind=kind_phys), allocatable, dimension(:,:) :: &
savet, saveq, saveu, savev
-!--- pass precip type from MP to Noah MP
- real(kind=kind_phys), dimension(size(Grid%xlon,1)) :: &
- rainn_mp, rainc_mp, snow_mp, graupel_mp, ice_mp
-
!--- GFDL modification for FV3
real(kind=kind_phys), dimension(size(Grid%xlon,1),Model%levs+1) ::&
@@ -905,36 +901,6 @@ subroutine GFS_physics_driver &
!CCPP: num3 = Model%ncnvc
endif
!*## CCPP ##
-!
-!## CCPP ##* initialization in GFS_typedefs.F90/tbd_create; calculation in sfc_noahmp_pre.F90/sfc_noahmp_pre_run,
-! although similar variables are calculated in GFS_MP_generic_post_run using up-to-date values of Diag%X,
-! which arguably makes more sense (the way it is done probably erroneously causes NoahMP to use 0 for
-! these values after diagnostics are zeroed.)
-! --- initization for those precip type used in Noah MP
-!
- if (Model%lsm == Model%lsm_noahmp) then
- do i=1,im
- rainn_mp(i) = zero
- rainc_mp(i) = zero
- snow_mp(i) = zero
- graupel_mp(i) = zero
- ice_mp(i) = zero
- enddo
-! --- get the amount of different precip type for Noah MP
-! --- convert from m/dtp to mm/s
- if (Model%imp_physics == Model%imp_physics_mg .or. &
- Model%imp_physics == Model%imp_physics_gfdl) then
- tem = one / (dtp*con_p001)
- do i=1,im
- rainn_mp(i) = tem * (Diag%rain(i)-Diag%rainc(i))
- rainc_mp(i) = tem * Diag%rainc(i)
- snow_mp(i) = tem * Diag%snow(i)
- graupel_mp(i) = tem * Diag%graupel(i)
- ice_mp(i) = tem * Diag%ice(i)
- enddo
- endif
- endif ! if (Model%lsm == Model%lsm_noahmp)
-!*## CCPP ##
!## CCPP ##* GFS_surface_generic.F90/GFS_surface_generic_pre_run
! --- set initial quantities for stochastic physics deltas
@@ -1906,8 +1872,8 @@ subroutine GFS_physics_driver &
Model%iopt_inf, Model%iopt_rad, Model%iopt_alb, &
Model%iopt_snf, Model%iopt_tbot, Model%iopt_stc, &
grid%xlat, xcosz, Model%yearlen, Model%julian, Model%imn,&
- rainn_mp, rainc_mp, snow_mp, graupel_mp, ice_mp, &
-
+ Sfcprop%drainncprv, Sfcprop%draincprv, Sfcprop%dsnowprv, &
+ Sfcprop%dgraupelprv, Sfcprop%diceprv, &
! --- in/outs:
weasd3(:,1), snowd3(:,1), tsfc3(:,1), tprcp3(:,1), &
Sfcprop%srflag, smsoil, stsoil, slsoil, Sfcprop%canopy, &
@@ -5262,7 +5228,31 @@ subroutine GFS_physics_driver &
!*## CCPP ##
!## CCPP ##* GFS_MP_generic.F90/GFS_MP_generic_post_run
Diag%rain(:) = Diag%rainc(:) + frain * rain1(:)
-
+
+! --- get the amount of different precip type for Noah MP
+! --- convert from m/dtp to mm/s
+ if (Model%lsm==Model%lsm_noahmp) then
+ if (Model%imp_physics == Model%imp_physics_mg .or. &
+ Model%imp_physics == Model%imp_physics_gfdl) then
+ !GJF: Should all precipitation rates have the same denominator below?
+ ! It appears that Diag%rain and Diag%rainc are on the dynamics time step,
+ ! but Diag%snow,graupel,ice are on the physics time step? This doesn't
+ ! matter as long as dtp=dtf (frain=1).
+ tem = 1.0 / (dtp*con_p001)
+ Sfcprop%draincprv(:) = tem * Diag%rainc(:)
+ Sfcprop%drainncprv(:) = tem * (frain * rain1(:))
+ Sfcprop%dsnowprv(:) = tem * Diag%snow(:)
+ Sfcprop%dgraupelprv(:) = tem * Diag%graupel(:)
+ Sfcprop%diceprv(:) = tem * Diag%ice(:)
+ else
+ Sfcprop%draincprv(:) = 0.0
+ Sfcprop%drainncprv(:) = 0.0
+ Sfcprop%dsnowprv(:) = 0.0
+ Sfcprop%dgraupelprv(:) = 0.0
+ Sfcprop%diceprv(:) = 0.0
+ endif
+ end if ! if (Model%lsm == Model%lsm_noahmp)
+
if (Model%cal_pre) then ! hchuang: add dominant precipitation type algorithm
!
call calpreciptype (kdt, Model%nrcm, im, ix, levs, levs+1, &
diff --git a/gfsphysics/GFS_layer/GFS_restart.F90 b/gfsphysics/GFS_layer/GFS_restart.F90
index a24cc0fc6..8e80f6f99 100644
--- a/gfsphysics/GFS_layer/GFS_restart.F90
+++ b/gfsphysics/GFS_layer/GFS_restart.F90
@@ -200,27 +200,27 @@ subroutine GFS_restart_populate (Restart, Model, Statein, Stateout, Sfcprop, &
num = num + 1
Restart%name2d(num) = 'ruc_2d_raincprv'
do nb = 1,nblks
- Restart%data(nb,num)%var2p => Tbd(nb)%raincprv(:)
+ Restart%data(nb,num)%var2p => Sfcprop(nb)%raincprv(:)
enddo
num = num + 1
Restart%name2d(num) = 'ruc_2d_rainncprv'
do nb = 1,nblks
- Restart%data(nb,num)%var2p => Tbd(nb)%rainncprv(:)
+ Restart%data(nb,num)%var2p => Sfcprop(nb)%rainncprv(:)
enddo
num = num + 1
Restart%name2d(num) = 'ruc_2d_iceprv'
do nb = 1,nblks
- Restart%data(nb,num)%var2p => Tbd(nb)%iceprv(:)
+ Restart%data(nb,num)%var2p => Sfcprop(nb)%iceprv(:)
enddo
num = num + 1
Restart%name2d(num) = 'ruc_2d_snowprv'
do nb = 1,nblks
- Restart%data(nb,num)%var2p => Tbd(nb)%snowprv(:)
+ Restart%data(nb,num)%var2p => Sfcprop(nb)%snowprv(:)
enddo
num = num + 1
Restart%name2d(num) = 'ruc_2d_graupelprv'
do nb = 1,nblks
- Restart%data(nb,num)%var2p => Tbd(nb)%graupelprv(:)
+ Restart%data(nb,num)%var2p => Sfcprop(nb)%graupelprv(:)
enddo
endif
! MYNN SFC
diff --git a/gfsphysics/GFS_layer/GFS_typedefs.F90 b/gfsphysics/GFS_layer/GFS_typedefs.F90
index 6b2402039..09ab1da2d 100644
--- a/gfsphysics/GFS_layer/GFS_typedefs.F90
+++ b/gfsphysics/GFS_layer/GFS_typedefs.F90
@@ -372,6 +372,20 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: lh(:) => null() !latent heating at the surface
#endif
+ !---- precipitation amounts from previous time step for RUC LSM/NoahMP LSM
+ real (kind=kind_phys), pointer :: raincprv (:) => null() !< explicit rainfall from previous timestep
+ real (kind=kind_phys), pointer :: rainncprv (:) => null() !< convective_precipitation_amount from previous timestep
+ real (kind=kind_phys), pointer :: iceprv (:) => null() !< ice amount from previous timestep
+ real (kind=kind_phys), pointer :: snowprv (:) => null() !< snow amount from previous timestep
+ real (kind=kind_phys), pointer :: graupelprv(:) => null() !< graupel amount from previous timestep
+
+ !---- precipitation rates from previous time step for NoahMP LSM
+ real (kind=kind_phys), pointer :: draincprv (:) => null() !< convective precipitation rate from previous timestep
+ real (kind=kind_phys), pointer :: drainncprv (:) => null() !< explicit rainfall rate from previous timestep
+ real (kind=kind_phys), pointer :: diceprv (:) => null() !< ice precipitation rate from previous timestep
+ real (kind=kind_phys), pointer :: dsnowprv (:) => null() !< snow precipitation rate from previous timestep
+ real (kind=kind_phys), pointer :: dgraupelprv(:) => null() !< graupel precipitation rate from previous timestep
+
contains
procedure :: create => sfcprop_create !< allocate array data
end type GFS_sfcprop_type
@@ -1192,20 +1206,6 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: prevst (:,:) => null() !<
real (kind=kind_phys), pointer :: prevsq (:,:) => null() !<
integer, pointer :: cactiv (:) => null() !< convective activity memory contour
-
- !---- precipitation amounts from previous time step for RUC LSM
- real (kind=kind_phys), pointer :: raincprv (:) => null() !< explicit rainfall from previous timestep
- real (kind=kind_phys), pointer :: rainncprv (:) => null() !< convective_precipitation_amount from previous timestep
- real (kind=kind_phys), pointer :: iceprv (:) => null() !< ice amount from previous timestep
- real (kind=kind_phys), pointer :: snowprv (:) => null() !< snow amount from previous timestep
- real (kind=kind_phys), pointer :: graupelprv(:) => null() !< graupel amount from previous timestep
-
- !---- precipitation rates from previous time step for NoahMP LSM
- real (kind=kind_phys), pointer :: draincprv (:) => null() !< convective precipitation rate from previous timestep
- real (kind=kind_phys), pointer :: drainncprv (:) => null() !< explicit rainfall rate from previous timestep
- real (kind=kind_phys), pointer :: diceprv (:) => null() !< ice precipitation rate from previous timestep
- real (kind=kind_phys), pointer :: dsnowprv (:) => null() !< snow precipitation rate from previous timestep
- real (kind=kind_phys), pointer :: dgraupelprv(:) => null() !< graupel precipitation rate from previous timestep
!--- MYNN prognostic variables that can't be in the Intdiag or Interstitial DDTs
real (kind=kind_phys), pointer :: CLDFRA_BL (:,:) => null() !
@@ -2207,7 +2207,18 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
Sfcprop%dt_cool = zero
Sfcprop%qrain = zero
endif
-
+ if (Model%lsm == Model%lsm_ruc .or. Model%lsm == Model%lsm_noahmp) then
+ allocate(Sfcprop%raincprv (IM))
+ allocate(Sfcprop%rainncprv (IM))
+ allocate(Sfcprop%iceprv (IM))
+ allocate(Sfcprop%snowprv (IM))
+ allocate(Sfcprop%graupelprv(IM))
+ Sfcprop%raincprv = clear_val
+ Sfcprop%rainncprv = clear_val
+ Sfcprop%iceprv = clear_val
+ Sfcprop%snowprv = clear_val
+ Sfcprop%graupelprv = clear_val
+ end if
! Noah MP allocate and init when used
!
if (Model%lsm == Model%lsm_noahmp ) then
@@ -2290,7 +2301,19 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
Sfcprop%tsnoxy = clear_val
Sfcprop%smoiseq = clear_val
Sfcprop%zsnsoxy = clear_val
-
+
+ allocate(Sfcprop%draincprv (IM))
+ allocate(Sfcprop%drainncprv (IM))
+ allocate(Sfcprop%diceprv (IM))
+ allocate(Sfcprop%dsnowprv (IM))
+ allocate(Sfcprop%dgraupelprv(IM))
+
+ Sfcprop%draincprv = clear_val
+ Sfcprop%drainncprv = clear_val
+ Sfcprop%diceprv = clear_val
+ Sfcprop%dsnowprv = clear_val
+ Sfcprop%dgraupelprv = clear_val
+
endif
#ifdef CCPP
@@ -2330,6 +2353,7 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
allocate (Sfcprop%xlaixy (IM))
Sfcprop%xlaixy = clear_val
end if
+
end if
if (Model%do_mynnsfclay) then
! For MYNN surface layer scheme
@@ -2359,6 +2383,7 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
allocate (Sfcprop%conv_act(IM))
Sfcprop%conv_act = zero
end if
+
#endif
end subroutine sfcprop_create
@@ -4880,32 +4905,6 @@ subroutine tbd_create (Tbd, IM, Model)
Tbd%cactiv = zero
end if
- if (Model%lsm == Model%lsm_ruc) then
- allocate(Tbd%raincprv (IM))
- allocate(Tbd%rainncprv (IM))
- allocate(Tbd%iceprv (IM))
- allocate(Tbd%snowprv (IM))
- allocate(Tbd%graupelprv(IM))
- Tbd%raincprv = clear_val
- Tbd%rainncprv = clear_val
- Tbd%iceprv = clear_val
- Tbd%snowprv = clear_val
- Tbd%graupelprv = clear_val
- end if
-
- if (Model%lsm == Model%lsm_noahmp) then
- allocate(Tbd%draincprv (IM))
- allocate(Tbd%drainncprv (IM))
- allocate(Tbd%diceprv (IM))
- allocate(Tbd%dsnowprv (IM))
- allocate(Tbd%dgraupelprv(IM))
- Tbd%draincprv = clear_val
- Tbd%drainncprv = clear_val
- Tbd%diceprv = clear_val
- Tbd%dsnowprv = clear_val
- Tbd%dgraupelprv = clear_val
- end if
-
!--- MYNN variables:
if (Model%do_mynnedmf) then
!print*,"Allocating all MYNN-EDMF variables:"
diff --git a/gfsphysics/GFS_layer/GFS_typedefs.meta b/gfsphysics/GFS_layer/GFS_typedefs.meta
index b6c5cead2..f84e6d095 100644
--- a/gfsphysics/GFS_layer/GFS_typedefs.meta
+++ b/gfsphysics/GFS_layer/GFS_typedefs.meta
@@ -1269,6 +1269,76 @@
dimensions = (horizontal_dimension)
type = real
kind = kind_phys
+[raincprv]
+ standard_name = lwe_thickness_of_convective_precipitation_amount_from_previous_timestep
+ long_name = convective_precipitation_amount from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[rainncprv]
+ standard_name = lwe_thickness_of_explicit_rainfall_amount_from_previous_timestep
+ long_name = explicit rainfall from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[iceprv]
+ standard_name = lwe_thickness_of_ice_amount_from_previous_timestep
+ long_name = ice amount from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[snowprv]
+ standard_name = lwe_thickness_of_snow_amount_from_previous_timestep
+ long_name = snow amount from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[graupelprv]
+ standard_name = lwe_thickness_of_graupel_amount_from_previous_timestep
+ long_name = graupel amount from previous timestep
+ units = m
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[draincprv]
+ standard_name = convective_precipitation_rate_from_previous_timestep
+ long_name = convective precipitation rate from previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[drainncprv]
+ standard_name = explicit_rainfall_rate_from_previous_timestep
+ long_name = explicit rainfall rate previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[diceprv]
+ standard_name = ice_precipitation_rate_from_previous_timestep
+ long_name = ice precipitation rate from previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[dsnowprv]
+ standard_name = snow_precipitation_rate_from_previous_timestep
+ long_name = snow precipitation rate from previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
+[dgraupelprv]
+ standard_name = graupel_precipitation_rate_from_previous_timestep
+ long_name = graupel precipitation rate from previous timestep
+ units = mm s-1
+ dimensions = (horizontal_dimension)
+ type = real
+ kind = kind_phys
########################################################################
[ccpp-arg-table]
@@ -4292,76 +4362,6 @@
units = none
dimensions = (horizontal_dimension)
type = integer
-[raincprv]
- standard_name = lwe_thickness_of_convective_precipitation_amount_from_previous_timestep
- long_name = convective_precipitation_amount from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[rainncprv]
- standard_name = lwe_thickness_of_explicit_rainfall_amount_from_previous_timestep
- long_name = explicit rainfall from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[iceprv]
- standard_name = lwe_thickness_of_ice_amount_from_previous_timestep
- long_name = ice amount from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[snowprv]
- standard_name = lwe_thickness_of_snow_amount_from_previous_timestep
- long_name = snow amount from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[graupelprv]
- standard_name = lwe_thickness_of_graupel_amount_from_previous_timestep
- long_name = graupel amount from previous timestep
- units = m
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[draincprv]
- standard_name = convective_precipitation_rate_from_previous_timestep
- long_name = convective precipitation rate from previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[drainncprv]
- standard_name = explicit_rainfall_rate_from_previous_timestep
- long_name = explicit rainfall rate previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[diceprv]
- standard_name = ice_precipitation_rate_from_previous_timestep
- long_name = ice precipitation rate from previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[dsnowprv]
- standard_name = snow_precipitation_rate_from_previous_timestep
- long_name = snow precipitation rate from previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[dgraupelprv]
- standard_name = graupel_precipitation_rate_from_previous_timestep
- long_name = graupel precipitation rate from previous timestep
- units = mm s-1
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
[CLDFRA_BL]
standard_name = subgrid_cloud_fraction_pbl
long_name = subgrid cloud fraction from PBL scheme
diff --git a/gfsphysics/physics/ugwp_driver_v0.f b/gfsphysics/physics/ugwp_driver_v0.f
index 10f0d7399..88c074154 100644
--- a/gfsphysics/physics/ugwp_driver_v0.f
+++ b/gfsphysics/physics/ugwp_driver_v0.f
@@ -46,7 +46,9 @@ subroutine cires_ugwp_driver_v0(me, master,
&, rain
real(kind=kind_phys), intent(in), dimension(im,levs) :: ugrs
- &, vgrs, tgrs, qgrs, prsi, prsl, prslk, phii, phil, del
+ &, vgrs, tgrs, qgrs, prsl, prslk, phil, del
+ real(kind=kind_phys), intent(in), dimension(im,levs+1) ::
+ & phii, prsi
! real(kind=kind_phys), intent(in) :: oro_stat(im,nmtvr)
real(kind=kind_phys), intent(in), dimension(im) :: hprime, oc
diff --git a/io/post_gfs.F90 b/io/post_gfs.F90
index 3ea19c555..9f3a0a80f 100644
--- a/io/post_gfs.F90
+++ b/io/post_gfs.F90
@@ -133,6 +133,7 @@ subroutine post_run_gfs(wrt_int_state,mypei,mpicomp,lead_write, &
!
ifhr = mynfhr
ifmin = mynfmin
+ if (ifhr == 0 ) ifmin = 0
if(mype==0) print *,'bf set_postvars,ifmin=',ifmin,'ifhr=',ifhr
call set_postvars_gfs(wrt_int_state,mpicomp,setvar_atmfile, &
setvar_sfcfile)