Skip to content

Commit

Permalink
From Eric: convert wet mixing ratios of cloud species to mixing ratio
Browse files Browse the repository at this point in the history
before the scheme, and convert back after scheme.

 From Chunxi, modify: 1. FA interface with GFS RRTMG using progcld2;
2.air pressure improvement; 3. add f_qrimef mixing in PBL
  • Loading branch information
mzhangw committed Nov 25, 2019
1 parent f497d40 commit f9e3ee0
Show file tree
Hide file tree
Showing 6 changed files with 233 additions and 312 deletions.
10 changes: 7 additions & 3 deletions physics/GFS_PBL_generic.F90
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
dqsfc_cpl, dusfci_cpl, dvsfci_cpl, dtsfci_cpl, dqsfci_cpl, dusfc_diag, dvsfc_diag, dtsfc_diag, dqsfc_diag, &
dusfci_diag, dvsfci_diag, dtsfci_diag, dqsfci_diag, dt3dt, du3dt_PBL, du3dt_OGWD, dv3dt_PBL, dv3dt_OGWD, dq3dt, &
dq3dt_ozone, rd, cp,fvirt, hvap, t1, q1, prsl, hflx, ushfsfci, oceanfrac, fice, dusfc_cice, dvsfc_cice, dtsfc_cice, &
dqsfc_cice, wet, dry, icy, wind, stress_ocn, hflx_ocn, evap_ocn, ugrs1, vgrs1, dkt_cpl, dkt, errmsg, errflg)
dqsfc_cice, wet, dry, icy, wind, stress_ocn, hflx_ocn, evap_ocn, ugrs1, vgrs1, dkt_cpl, dkt, epsq, errmsg, errflg)

use machine, only : kind_phys
use GFS_PBL_generic_common, only : set_aerosol_tracer_index
Expand All @@ -302,7 +302,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
logical, intent(in) :: ltaerosol, cplflx, cplchm, lssav, ldiag3d, lsidea
logical, intent(in) :: hybedmf, do_shoc, satmedmf, shinhong, do_ysu

real(kind=kind_phys), intent(in) :: dtf
real(kind=kind_phys), intent(in) :: dtf, epsq
real(kind=kind_phys), intent(in) :: rd, cp, fvirt, hvap
real(kind=kind_phys), dimension(:), intent(in) :: t1, q1, hflx, oceanfrac, fice
real(kind=kind_phys), dimension(:,:), intent(in) :: prsl
Expand Down Expand Up @@ -389,7 +389,11 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
dqdt(i,k,ntcw) = dvdftra(i,k,2)
dqdt(i,k,ntiw) = dvdftra(i,k,3)
dqdt(i,k,ntrw) = dvdftra(i,k,4)
dqdt(i,k,nqrimef) = dvdftra(i,k,5)
if(dvdftra(i,k,3) > epsq) then
dqdt(i,k,nqrimef) = dvdftra(i,k,5)/dvdftra(i,k,3)
else
dqdt(i,k,nqrimef) = 1.
end if
dqdt(i,k,ntoz) = dvdftra(i,k,6)
enddo
enddo
Expand Down
9 changes: 9 additions & 0 deletions physics/GFS_PBL_generic.meta
Original file line number Diff line number Diff line change
Expand Up @@ -1220,6 +1220,15 @@
kind = kind_phys
intent = in
optional = F
[EPSQ]
standard_name = minimum_value_of_specific_humidity
long_name = floor value for specific humidity
units = kg kg-1
dimensions = ()
type = real
kind = kind_phys
intent = in
optional = F
[errmsg]
standard_name = ccpp_error_message
long_name = error message for error handling in CCPP
Expand Down
12 changes: 10 additions & 2 deletions physics/GFS_rrtmg_pre.F90
Original file line number Diff line number Diff line change
Expand Up @@ -748,8 +748,7 @@ subroutine GFS_rrtmg_pre_run (Model, Grid, Sfcprop, Statein, & ! input
! clouds, cldsa, mtopa, mbota, de_lgth) ! --- outputs
endif

elseif(Model%imp_physics == 8 .or. Model%imp_physics == 6 .or. &
Model%imp_physics == 15) then
elseif(Model%imp_physics == 8 .or. Model%imp_physics == 6) then
if (Model%kdt == 1) then
Tbd%phy_f3d(:,:,Model%nleffr) = 10.
Tbd%phy_f3d(:,:,Model%nieffr) = 50.
Expand All @@ -766,6 +765,15 @@ subroutine GFS_rrtmg_pre_run (Model, Grid, Sfcprop, Statein, & ! input
Tbd%phy_f3d(:,:,2), Tbd%phy_f3d(:,:,3), &
clouds,cldsa,mtopa,mbota, de_lgth) ! --- outputs

elseif(Model%imp_physics == 15) then
call progcld2 (plyr,plvl,tlyr,qlyr,qstl,rhly,tvly,tracer1,& ! --- inputs
Grid%xlat,Grid%xlon,Sfcprop%slmsk,dz,delp, &
ntrac-1, ntcw-1,ntiw-1,ntrw-1, &
im, lmk, lmp, &
Model%lmfshal,Model%lmfdeep2, &
clouds,cldsa,mtopa,mbota, de_lgth) ! --- outputs
! --- output

endif ! end if_imp_physics

! endif ! end_if_ntcw
Expand Down
Loading

0 comments on commit f9e3ee0

Please sign in to comment.