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)