Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
… into HEAD
  • Loading branch information
dustinswales committed Nov 17, 2022
2 parents 5d42ea9 + 8c9d446 commit 91a474a
Show file tree
Hide file tree
Showing 73 changed files with 4,915 additions and 1,746 deletions.
10 changes: 5 additions & 5 deletions physics/GFS_MP_generic_post.F90
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ module GFS_MP_generic_post
!> @{
subroutine GFS_MP_generic_post_run( &
im, levs, kdt, nrcm, nncl, ntcw, ntrac, imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_nssl, &
imp_physics_mg, imp_physics_fer_hires, cal_pre, cplflx, cplchm, progsigma, con_g, rainmin, dtf, frain, rainc, &
imp_physics_mg, imp_physics_fer_hires, cal_pre, cplflx, cplchm, cpllnd, progsigma, con_g, rainmin, dtf, frain, rainc, &
rain1, rann, xlat, xlon, gt0, gq0, prsl, prsi, phii, tsfc, ice, snow, graupel, save_t, save_q, rain0, ice0, snow0,&
graupel0, del, rain, domr_diag, domzr_diag, domip_diag, doms_diag, tprcp, srflag, sr, cnvprcp, totprcp, totice, &
totsnw, totgrp, cnvprcpb, totprcpb, toticeb, totsnwb, totgrpb, rain_cpl, rainc_cpl, snow_cpl, pwat, &
Expand All @@ -37,7 +37,7 @@ subroutine GFS_MP_generic_post_run(
integer, intent(in) :: im, levs, kdt, nrcm, nncl, ntcw, ntrac, num_dfi_radar, index_of_process_dfi_radar
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_mg, imp_physics_fer_hires
integer, intent(in) :: imp_physics_nssl
logical, intent(in) :: cal_pre, lssav, ldiag3d, qdiag3d, cplflx, cplchm, progsigma
logical, intent(in) :: cal_pre, lssav, ldiag3d, qdiag3d, cplflx, cplchm, cpllnd, progsigma
integer, intent(in) :: index_of_temperature,index_of_process_mp

integer :: dfi_radar_max_intervals
Expand Down Expand Up @@ -249,7 +249,7 @@ subroutine GFS_MP_generic_post_run(
! Conversion factor from mm per day to m per physics timestep
tem = dtp * con_p001 / con_day

!> - For GFDL and Thompson MP scheme, determine convective snow by surface temperature;
!> - For GFDL, Thompson and NSSL MP schemes, determine convective snow by surface temperature;
!! and determine explicit rain/snow by snow/ice/graupel coming out directly from MP
!! and convective rainfall from the cumulus scheme if the surface temperature is below
!! \f$0^oC\f$.
Expand Down Expand Up @@ -363,7 +363,7 @@ subroutine GFS_MP_generic_post_run(
enddo
endif

if (cplflx .or. cplchm) then
if (cplflx .or. cplchm .or. cpllnd) then
do i = 1, im
dsnow_cpl(i)= max(zero, rain(i) * srflag(i))
drain_cpl(i)= max(zero, rain(i) - dsnow_cpl(i))
Expand All @@ -372,7 +372,7 @@ subroutine GFS_MP_generic_post_run(
enddo
endif

if (cplchm) then
if (cplchm .or. cpllnd) then
do i = 1, im
rainc_cpl(i) = rainc_cpl(i) + rainc(i)
enddo
Expand Down
7 changes: 7 additions & 0 deletions physics/GFS_MP_generic_post.meta
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,13 @@
dimensions = ()
type = logical
intent = in
[cpllnd]
standard_name = flag_for_land_coupling
long_name = flag controlling cpllnd collection (default off)
units = flag
dimensions = ()
type = logical
intent = in
[progsigma]
standard_name = do_prognostic_updraft_area_fraction
long_name = flag for prognostic sigma in cumulus scheme
Expand Down
10 changes: 5 additions & 5 deletions physics/GFS_MP_generic_pre.F90
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ module GFS_MP_generic_pre
!> \section arg_table_GFS_MP_generic_pre_run Argument Table
!! \htmlinclude GFS_MP_generic_pre_run.html
!!
subroutine GFS_MP_generic_pre_run(im, levs, ldiag3d, qdiag3d, do_aw, ntcw, nncl, &
subroutine GFS_MP_generic_pre_run(im, levs, ldiag3d, qdiag3d, do_aw, progsigma, ntcw, nncl, &
ntrac, gt0, gq0, save_t, save_q, num_dfi_radar, errmsg, errflg)
!
use machine, only: kind_phys

implicit none
integer, intent(in) :: im, levs, ntcw, nncl, ntrac, num_dfi_radar
logical, intent(in) :: ldiag3d, qdiag3d, do_aw
logical, intent(in) :: ldiag3d, qdiag3d, do_aw, progsigma
real(kind=kind_phys), dimension(:,:), intent(in) :: gt0
real(kind=kind_phys), dimension(:,:,:), intent(in) :: gq0

Expand All @@ -39,7 +39,7 @@ subroutine GFS_MP_generic_pre_run(im, levs, ldiag3d, qdiag3d, do_aw, ntcw, nncl,
enddo
enddo
endif
if (ldiag3d .or. do_aw) then
if (ldiag3d .or. do_aw .or. progsigma) then
if(qdiag3d) then
do n=1,ntrac
do k=1,levs
Expand All @@ -48,7 +48,7 @@ subroutine GFS_MP_generic_pre_run(im, levs, ldiag3d, qdiag3d, do_aw, ntcw, nncl,
enddo
enddo
enddo
else if(do_aw) then
else if(do_aw .or. progsigma) then
! if qdiag3d, all q are saved already
save_q(1:im,:,1) = gq0(1:im,:,1)
do n=ntcw,ntcw+nncl-1
Expand All @@ -59,4 +59,4 @@ subroutine GFS_MP_generic_pre_run(im, levs, ldiag3d, qdiag3d, do_aw, ntcw, nncl,

end subroutine GFS_MP_generic_pre_run

end module GFS_MP_generic_pre
end module GFS_MP_generic_pre
7 changes: 7 additions & 0 deletions physics/GFS_MP_generic_pre.meta
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@
dimensions = ()
type = logical
intent = in
[progsigma]
standard_name = do_prognostic_updraft_area_fraction
long_name = flag for prognostic area fraction in cumulus convection
units = flag
dimensions = ()
type = logical
intent = in
[ntcw]
standard_name = index_of_cloud_liquid_water_mixing_ratio_in_tracer_concentration_array
long_name = tracer index for cloud condensate (or liquid water)
Expand Down
8 changes: 5 additions & 3 deletions physics/GFS_PBL_generic_common.F90
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ module GFS_PBL_generic_common
contains

subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, ltaerosol, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_zhao_carr, imp_physics_nssl,&
nssl_hail_on, nssl_ccn_on, kk, &
Expand All @@ -23,7 +23,7 @@ subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_zhao_carr,imp_physics_nssl
logical, intent(in ) :: ltaerosol, nssl_hail_on, nssl_ccn_on
logical, intent(in ) :: ltaerosol, mraerosol, nssl_hail_on, nssl_ccn_on
integer, intent(out) :: kk
character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg
Expand All @@ -38,6 +38,8 @@ subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
! Thompson
if(ltaerosol) then
kk = 12
else if(mraerosol) then
kk = 10
else
kk = 9
endif
Expand Down Expand Up @@ -70,4 +72,4 @@ subroutine set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &

end subroutine set_aerosol_tracer_index

end module GFS_PBL_generic_common
end module GFS_PBL_generic_common
21 changes: 18 additions & 3 deletions physics/GFS_PBL_generic_post.F90
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
ntqv, ntcw, ntiw, ntrw, ntsw, ntlnc, ntinc, ntrnc, ntsnc, ntgnc, ntwa, ntia, ntgl, ntoz, ntke, ntkev,nqrimef, &
trans_aero, ntchs, ntchm, ntccn, nthl, nthnc, ntgv, nthv, &
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, imp_physics_zhao_carr, imp_physics_mg, &
imp_physics_fer_hires, imp_physics_nssl, nssl_ccn_on, ltaerosol, nssl_hail_on, &
imp_physics_fer_hires, imp_physics_nssl, nssl_ccn_on, ltaerosol, mraerosol, nssl_hail_on, &
cplflx, cplaqm, cplchm, lssav, flag_for_pbl_generic_tend, ldiag3d, lsidea, hybedmf, do_shoc, satmedmf, &
shinhong, do_ysu, dvdftra, dusfc1, dvsfc1, dtsfc1, dqsfc1, dtf, dudt, dvdt, dtdt, htrsw, htrlw, xmu, &
dqdt, dusfc_cpl, dvsfc_cpl, dtsfc_cpl, dtend, dtidx, index_of_temperature, index_of_x_wind, index_of_y_wind, &
Expand All @@ -36,7 +36,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
integer, intent(in) :: imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires
integer, intent(in) :: imp_physics_nssl
logical, intent(in) :: nssl_ccn_on, nssl_hail_on
logical, intent(in) :: ltaerosol, cplflx, cplaqm, cplchm, lssav, ldiag3d, lsidea, use_med_flux
logical, intent(in) :: ltaerosol, cplflx, cplaqm, cplchm, lssav, ldiag3d, lsidea, use_med_flux, mraerosol
logical, intent(in) :: hybedmf, do_shoc, satmedmf, shinhong, do_ysu

logical, intent(in) :: flag_for_pbl_generic_tend
Expand Down Expand Up @@ -104,7 +104,7 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
if (trans_aero) then
! Set kk if chemistry-aerosol tracers are diffused
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, ltaerosol, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_zhao_carr, imp_physics_nssl,&
nssl_hail_on, nssl_ccn_on, kk, &
Expand Down Expand Up @@ -165,6 +165,21 @@ subroutine GFS_PBL_generic_post_run (im, levs, nvdiff, ntrac,
dqdt(i,k,ntia) = dvdftra(i,k,12)
enddo
enddo
else if(mraerosol) then
do k=1,levs
do i=1,im
dqdt(i,k,ntqv) = dvdftra(i,k,1)
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,ntsw) = dvdftra(i,k,5)
dqdt(i,k,ntgl) = dvdftra(i,k,6)
dqdt(i,k,ntlnc) = dvdftra(i,k,7)
dqdt(i,k,ntinc) = dvdftra(i,k,8)
dqdt(i,k,ntrnc) = dvdftra(i,k,9)
dqdt(i,k,ntoz) = dvdftra(i,k,10)
enddo
enddo
else
do k=1,levs
do i=1,im
Expand Down
7 changes: 7 additions & 0 deletions physics/GFS_PBL_generic_post.meta
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,13 @@
dimensions = ()
type = logical
intent = in
[mraerosol]
standard_name = do_merra2_aerosol_awareness
long_name = flag for merra2 aerosol-aware physics for example the thompson microphysics
units = flag
dimensions = ()
type = logical
intent = in
[nssl_ccn_on]
standard_name = nssl_ccn_on
long_name = CCN activation flag in NSSL micro
Expand Down
26 changes: 21 additions & 5 deletions physics/GFS_PBL_generic_pre.F90
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
ntwa, ntia, ntgl, ntoz, ntke, ntkev, nqrimef, trans_aero, ntchs, ntchm, &
ntccn, nthl, nthnc, ntgv, nthv, &
imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6, &
imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires, imp_physics_nssl, &
ltaerosol, nssl_ccn_on, nssl_hail_on, &
imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires, imp_physics_nssl, &
ltaerosol, mraerosol, nssl_ccn_on, nssl_hail_on, &
hybedmf, do_shoc, satmedmf, qgrs, vdftra, save_u, save_v, save_t, save_q, &
flag_for_pbl_generic_tend, ldiag3d, qdiag3d, lssav, ugrs, vgrs, tgrs, errmsg, errflg)

Expand All @@ -33,7 +33,7 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
logical, intent(in) :: trans_aero, ldiag3d, qdiag3d, lssav
integer, intent(in) :: imp_physics, imp_physics_gfdl, imp_physics_thompson, imp_physics_wsm6
integer, intent(in) :: imp_physics_zhao_carr, imp_physics_mg, imp_physics_fer_hires
logical, intent(in) :: ltaerosol, hybedmf, do_shoc, satmedmf, flag_for_pbl_generic_tend
logical, intent(in) :: ltaerosol, hybedmf, do_shoc, satmedmf, flag_for_pbl_generic_tend, mraerosol
integer, intent(in) :: imp_physics_nssl
logical, intent(in) :: nssl_hail_on, nssl_ccn_on

Expand Down Expand Up @@ -108,6 +108,22 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
enddo
enddo
rtg_ozone_index = 10
elseif(mraerosol) then
do k=1,levs
do i=1,im
vdftra(i,k,1) = qgrs(i,k,ntqv)
vdftra(i,k,2) = qgrs(i,k,ntcw)
vdftra(i,k,3) = qgrs(i,k,ntiw)
vdftra(i,k,4) = qgrs(i,k,ntrw)
vdftra(i,k,5) = qgrs(i,k,ntsw)
vdftra(i,k,6) = qgrs(i,k,ntgl)
vdftra(i,k,7) = qgrs(i,k,ntlnc)
vdftra(i,k,8) = qgrs(i,k,ntinc)
vdftra(i,k,9) = qgrs(i,k,ntrnc)
vdftra(i,k,10) = qgrs(i,k,ntoz)
enddo
enddo
rtg_ozone_index = 10
else
do k=1,levs
do i=1,im
Expand Down Expand Up @@ -242,7 +258,7 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,
!
if (trans_aero) then
call set_aerosol_tracer_index(imp_physics, imp_physics_wsm6, &
imp_physics_thompson, ltaerosol, &
imp_physics_thompson, ltaerosol,mraerosol, &
imp_physics_mg, ntgl, imp_physics_gfdl, &
imp_physics_zhao_carr, imp_physics_nssl,&
nssl_hail_on, nssl_ccn_on, kk, &
Expand Down Expand Up @@ -297,4 +313,4 @@ subroutine GFS_PBL_generic_pre_run (im, levs, nvdiff, ntrac, rtg_ozone_index,

end subroutine GFS_PBL_generic_pre_run

end module GFS_PBL_generic_pre
end module GFS_PBL_generic_pre
9 changes: 8 additions & 1 deletion physics/GFS_PBL_generic_pre.meta
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,13 @@
dimensions = ()
type = logical
intent = in
[mraerosol]
standard_name = do_merra2_aerosol_awareness
long_name = flag for merra2 aerosol-aware physics for example the thompson microphysics
units = flag
dimensions = ()
type = logical
intent = in
[nssl_ccn_on]
standard_name = nssl_ccn_on
long_name = CCN activation flag in NSSL micro
Expand Down Expand Up @@ -429,4 +436,4 @@
units = 1
dimensions = ()
type = integer
intent = out
intent = out
8 changes: 4 additions & 4 deletions physics/GFS_radiation_surface.F90
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ end subroutine GFS_radiation_surface_init
!! \htmlinclude GFS_radiation_surface_run.html
!!
subroutine GFS_radiation_surface_run ( &
im, frac_grid, lslwr, lsswr, lsm, lsm_noahmp, lsm_ruc, &
im, nf_albd, frac_grid, lslwr, lsswr, lsm, lsm_noahmp, lsm_ruc, &
xlat, xlon, slmsk, lndp_type, n_var_lndp, sfc_alb_pert, &
lndp_var_list, lndp_prt_list, landfrac, snodl, snodi, sncovr, &
sncovr_ice, fice, zorl, hprime, tsfg, tsfa, tisfc, coszen, &
Expand All @@ -62,12 +62,12 @@ subroutine GFS_radiation_surface_run ( &
semisbase, semis, sfcalb, sfc_alb_dif, errmsg, errflg)

use module_radiation_surface, only: f_zero, f_one, &
epsln, NF_ALBD, &
epsln, &
setemis, setalb

implicit none

integer, intent(in) :: im
integer, intent(in) :: im, nf_albd
logical, intent(in) :: frac_grid, lslwr, lsswr, use_cice_alb, cplice
integer, intent(in) :: lsm, lsm_noahmp, lsm_ruc, lndp_type, n_var_lndp
real(kind=kind_phys), intent(in) :: min_seaice, min_lakeice
Expand Down Expand Up @@ -184,7 +184,7 @@ subroutine GFS_radiation_surface_run ( &
alvsf, alnsf, alvwf, alnwf, facsf, facwf, fice, tisfc, &
albdvis_lnd, albdnir_lnd, albivis_lnd, albinir_lnd, &
albdvis_ice, albdnir_ice, albivis_ice, albinir_ice, &
IM, sfc_alb_pert, lndp_alb, fracl, fraco, fraci, icy, & ! --- inputs
im, nf_albd, sfc_alb_pert, lndp_alb, fracl, fraco, fraci, icy, & ! --- inputs
sfcalb ) ! --- outputs

!> -# Approximate mean surface albedo from vis- and nir- diffuse values.
Expand Down
7 changes: 7 additions & 0 deletions physics/GFS_radiation_surface.meta
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@
dimensions = ()
type = integer
intent = in
[nf_albd]
standard_name = number_of_components_for_surface_albedo
long_name = number of IR/VIS/UV compinents for surface albedo
units = count
dimensions = ()
type = integer
intent = in
[frac_grid]
standard_name = flag_for_fractional_landmask
long_name = flag for fractional grid
Expand Down
Loading

0 comments on commit 91a474a

Please sign in to comment.