Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
8b23f66
adding updated suite for coupling
linlin-pan Dec 3, 2019
26de321
change ifmin to zero at fh00 for inline POST (#14)
junwang-noaa Dec 4, 2019
3aacc00
changing ccpp/suites/suite_FV3_GFS_2017_couple.xml
linlin-pan Dec 4, 2019
66c7001
remove sfc_noahmp_pre interstitial scheme from prebuild and SDF, move…
grantfirl Dec 5, 2019
c9322aa
change RUC surface precip vars to Sfcprop DDT in GFS_restart.F90
grantfirl Dec 5, 2019
0a292c4
Merge branch 'develop' of https://github.com/NOAA-EMC/fv3atm into HEAD
climbfuji Dec 5, 2019
9f72864
update the suite file for coupling
linlin-pan Dec 6, 2019
d373518
adding new suit files for GFS v15.2 and GFS v16beta
linlin-pan Dec 6, 2019
eb4c2e0
make associated change to GFS_physics_driver for NoahMP precip rates
grantfirl Dec 6, 2019
41884c2
Merge branch 'fix_noahmp_precip_rates' of https://github.com/grantfir…
climbfuji Dec 6, 2019
3be9f98
Merge branch 'dtc/develop' of https://github.com/panll/fv3atm into up…
climbfuji Dec 6, 2019
aa99bea
fix array dimensions for phii, prsi in ugwp_driver_v0.F
grantfirl Dec 6, 2019
b317eae
Bugfixes for NoahMP precipitation rate PR
climbfuji Dec 6, 2019
3780030
Merge branch 'fix_cires_ugwp_dimension_bug' of https://github.com/gra…
climbfuji Dec 6, 2019
718b7a5
fix cires_ugwp_init call arguments in GFS_driver.F90 (there is no iss…
grantfirl Dec 6, 2019
1c7f2c1
Merge branch 'fix_cires_ugwp_dimension_bug' of https://github.com/gra…
climbfuji Dec 6, 2019
fd8b1d6
Update submodule pointer for ccpp/physics
climbfuji Dec 9, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion ccpp/config/ccpp_prebuild_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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' ],
Expand Down
88 changes: 88 additions & 0 deletions ccpp/suites/suite_FV3_GFS_2017_coupled.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>

<suite name="FV3_GFS_2017_coupled" lib="ccppphys" ver="3">
<!-- <init></init> -->
<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_ocean</scheme>
<scheme>lsm_noah</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>dcyc2t3_post</scheme>
<scheme>sfc_diag</scheme>
<scheme>sfc_diag_post</scheme>
<scheme>GFS_surface_generic_post</scheme>
<scheme>GFS_PBL_generic_pre</scheme>
<scheme>hedmf</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</scheme>
<scheme>GFS_DCNV_generic_pre</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</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>zhaocarr_gscond</scheme>
<scheme>zhaocarr_precpd</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>
1 change: 0 additions & 1 deletion ccpp/suites/suite_FV3_GFS_2017_gfdlmp_noahmp.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
<scheme>sfc_nst_pre</scheme>
<scheme>sfc_nst</scheme>
<scheme>sfc_nst_post</scheme>
<scheme>sfc_noahmp_pre</scheme>
<scheme>noahmpdrv</scheme>
<scheme>sfc_sice</scheme>
<scheme>GFS_surface_loop_control_part2</scheme>
Expand Down
94 changes: 94 additions & 0 deletions ccpp/suites/suite_FV3_GFS_v15.2.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_v15" 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>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>dcyc2t3_post</scheme>
<scheme>sfc_diag</scheme>
<scheme>sfc_diag_post</scheme>
<scheme>GFS_surface_generic_post</scheme>
<scheme>GFS_PBL_generic_pre</scheme>
<scheme>hedmf</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>GFS_DCNV_generic_pre</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</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>
94 changes: 94 additions & 0 deletions ccpp/suites/suite_FV3_GFS_v16beta.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" 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>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>dcyc2t3_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>GFS_DCNV_generic_pre</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</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>
2 changes: 1 addition & 1 deletion gfsphysics/GFS_layer/GFS_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
64 changes: 27 additions & 37 deletions gfsphysics/GFS_layer/GFS_physics_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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) ::&
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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, &
Expand Down Expand Up @@ -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, &
Expand Down
Loading