Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GF CU scheme in CCPP #98

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,11 @@ else (PROJECT STREQUAL "CCPP-FV3")
./physics/GFS_MP_generic_pre.f90
./physics/gscond.f
./physics/precpd.f
./physics/cu_gf_driver_pre.F90
./physics/cu_gf_driver_post.F90
./physics/cu_gf_driver.F90
./physics/cu_gf_deep.F90
./physics/cu_gf_sh.F90
./physics/GFS_calpreciptype.f90
./physics/GFS_MP_generic_post.f90
./physics/gmtb_scm_sfc_flux_spec.f90
Expand Down Expand Up @@ -260,6 +265,9 @@ else (PROJECT STREQUAL "CCPP-FV3")
./physics/rayleigh_damp_cap.F90
./physics/get_phi_fv3_cap.F90
./physics/zhaocarr_precpd_cap.F90
./physics/cu_gf_driver_pre_cap.F90
./physics/cu_gf_driver_cap.F90
./physics/cu_gf_driver_post_cap.F90
)
endif (PROJECT STREQUAL "CCPP-FV3")

Expand Down
23 changes: 20 additions & 3 deletions GFS_layer/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,10 @@ module GFS_typedefs

integer :: blkno !< for explicit data blocking: block number of this block

!--- dynamical forcing variables for Grell-Freitas convection
real (kind=kind_phys), pointer :: forcet (:,:) => null() !<
real (kind=kind_phys), pointer :: forceq (:,:) => null() !<

!--- radiation variables that need to be carried over from radiation to physics
real (kind=kind_phys), pointer :: htlwc(:,:) => null() !<
real (kind=kind_phys), pointer :: htlw0(:,:) => null() !<
Expand Down Expand Up @@ -2064,7 +2068,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
elseif(Model%imfdeepcnv == 1) then
print *,' July 2010 version of SAS conv scheme used'
elseif(Model%imfdeepcnv == 2) then
print *,' scale & aerosol-aware mass-flux deep conv scheme'
print *,' scale & aerosol-aware mass-flux deep conv scheme'
elseif(Model%imfdeepcnv == 3) then
print *,' scale & aerosol-aware Grell-Fraitus deep conv scheme'
endif
endif
else
Expand All @@ -2087,6 +2093,8 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
print *,' July 2010 version of mass-flux shallow conv scheme used'
elseif (Model%imfshalcnv == 2) then
print *,' scale- & aerosol-aware mass-flux shallow conv scheme (2017)'
elseif (Model%imfshalcnv == 3) then
print *,'Grell-Freitas scale- & aerosol-aware mass-flux shallow conv scheme (2014)'
else
print *,' unknown mass-flux scheme in use - defaulting to no shallow convection'
Model%imfshalcnv = -1
Expand Down Expand Up @@ -2123,7 +2131,11 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
Model%npdf3d = 0
if (Model%ncld <= 1) then
if (Model%zhao_mic) then ! default setup for Zhao Microphysics
Model%num_p3d = 4
if (Model%imfdeepcnv == 3) then
Model%num_p3d = 6 ! hli mod 09/06/2017
else
Model%num_p3d = 4
endif
Model%num_p2d = 3
if (Model%pdfcld) then
Model%npdf3d = 3
Expand Down Expand Up @@ -2181,7 +2193,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
!--- BEGIN CODE FROM GLOOPR
!--- set up parameters for Xu & Randell's cloudiness computation (Radiation)
Model%lmfshal = (Model%shal_cnv .and. (Model%imfshalcnv > 0))
Model%lmfdeep2 = (Model%imfdeepcnv == 2)
Model%lmfdeep2 = (Model%imfdeepcnv == 2 .or. Model%imfdeepcnv == 3) ! hli mod 09/06/2017
!--- END CODE FROM GLOOPR

!--- BEGIN CODE FROM GLOOPB
Expand Down Expand Up @@ -2527,6 +2539,11 @@ subroutine tbd_create (Tbd, IM, BLKNO, Model)

Tbd%blkno = BLKNO

allocate(Tbd%forcet(IM, Model%levs))
allocate(Tbd%forceq(IM, Model%levs))
Tbd%forcet = clear_val
Tbd%forceq = clear_val

allocate (Tbd%htlwc (IM,Model%levr+LTP))
allocate (Tbd%htlw0 (IM,Model%levr+LTP))
allocate (Tbd%htswc (IM,Model%levr+LTP))
Expand Down
6 changes: 3 additions & 3 deletions input.nml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@

&gfs_physics_nml
fhzero = 6.
ldiag3d = .false.
ldiag3d = .true.
fhcyc = 0.
nst_anl = .true.
use_ufo = .true.
Expand Down Expand Up @@ -152,8 +152,8 @@
random_clds = .true.
trans_trac = .true.
cnvcld = .true.
imfshalcnv = 2
imfdeepcnv = 2
imfshalcnv = 3
imfdeepcnv = 3
cdmbgwd = 3.5,0.25
prslrd0 = 0.
ivegsrc = 1
Expand Down
13 changes: 13 additions & 0 deletions physics/GFS_rad_time_vary.scm.f90
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,19 @@ subroutine GFS_rad_time_vary_run (Model, Statein, Tbd, errmsg, errflg)
endif
endif

if (Model%num_p3d == 6) then ! hli 05/25/2018
if (Model%kdt == 1) then
Tbd%phy_f3d(:,:,1) = Statein%tgrs
Tbd%phy_f3d(:,:,2) = max(qmin,Statein%qgrs(:,:,1))
Tbd%phy_f3d(:,:,3) = Statein%tgrs
Tbd%phy_f3d(:,:,4) = max(qmin,Statein%qgrs(:,:,1))
Tbd%phy_f3d(:,:,5) = Statein%tgrs ! for GF
Tbd%phy_f3d(:,:,6) = max(qmin,Statein%qgrs(:,:,1)) ! for GF
Tbd%phy_f2d(:,1) = Statein%prsi(:,1)
Tbd%phy_f2d(:,2) = Statein%prsi(:,1)
endif
endif

endif

end subroutine GFS_rad_time_vary_run
Expand Down
Loading