← Back to Documentation Home
CCPP SciDoc for Global Workflow v1.0.0  GW v1.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches

◆ gfs_radiation_post_run()

subroutine, public gfs_radiation_post::gfs_radiation_post_run ( logical, intent(in)  dolwrad,
logical, intent(in)  doswrad,
integer, intent(in)  tend_opt_lwrad,
integer, intent(in)  tend_opt_swrad,
logical, intent(in)  lssav,
real(kind_phys), dimension(:), intent(inout)  total_albedo,
type(topfsw_type), dimension(:), intent(inout)  topfsw,
real(kind_phys), intent(in)  fhlwr,
real(kind_phys), intent(in)  fhswr,
real(kind_phys), intent(in)  delt,
real(kind_phys), dimension(:), intent(in)  coszen,
real(kind_phys), dimension(:), intent(in)  coszdg,
real(kind_phys), intent(in)  raddt,
real(kind_phys), dimension(:,:), intent(in)  aerodp,
real(kind_phys), dimension(:,:), intent(in)  cldsa,
integer, dimension(:,:), intent(in)  mtopa,
integer, dimension(:,:), intent(in)  mbota,
real(kind_phys), dimension(:,:), intent(in)  cldtausw,
real(kind_phys), dimension(:,:), intent(in)  cldtaulw,
real(kind_phys), dimension(:,:), intent(in)  p_lev,
integer, intent(in)  kb,
integer, intent(in)  kd,
integer, intent(in)  kt,
type(sfcflw_type), dimension(:), intent(inout)  sfcflw,
type(sfcfsw_type), dimension(:), intent(inout)  sfcfsw,
type(topflw_type), dimension(:), intent(inout)  topflw,
type(cmpfsw_type), dimension(:), intent(in)  scmpsw,
integer, intent(in)  ncol,
integer, intent(in)  nlev,
integer, intent(in)  ntrac,
integer, intent(in)  lmk,
integer, intent(in)  nday,
integer, intent(in)  nfxr,
integer, intent(in)  nspc1,
real(kind_phys), dimension(:,:), intent(inout)  fluxr,
logical, intent(in)  do_rrtmgp,
logical, intent(in)  do_lw_clrsky_hr,
real(kind_phys), dimension(:,:), intent(in), optional  fluxlwup_clrsky,
real(kind_phys), dimension(:,:), intent(in), optional  fluxlwdown_clrsky,
real(kind_phys), dimension(:,:), intent(inout), optional  htrlwc,
real(kind_phys), dimension(:,:), intent(in), optional  fluxlwup_allsky,
real(kind_phys), dimension(:,:), intent(in), optional  fluxlwdown_allsky,
real(kind_phys), dimension(:,:), intent(inout)  htrlw,
logical, intent(in)  do_sw_clrsky_hr,
real(kind_phys), dimension(:,:), intent(inout), optional  htrswc,
real(kind_phys), dimension(:,:), intent(in), optional  fluxswup_clrsky,
integer, dimension(:), intent(in)  idxday,
real(kind_phys), dimension(:,:), intent(in), optional  fluxswdown_clrsky,
real(kind_phys), dimension(:,:), intent(inout)  htrsw,
real(kind_phys), dimension(:,:), intent(in), optional  fluxswup_allsky,
real(kind_phys), dimension(:,:), intent(in), optional  fluxswdown_allsky,
integer, intent(in)  isfc,
integer, intent(in)  itoa,
real(kind_phys), dimension(:), intent(inout)  tsflw,
real(kind_phys), dimension(:), intent(in)  tsfa,
real(kind_phys), dimension(:), intent(inout)  sfcdlw,
real(kind_phys), dimension(:), intent(inout)  sfculw,
real(kind_phys), dimension(:,:), intent(inout), optional  htrlwu,
real(kind_phys), dimension(:), intent(inout)  nirbmdi,
real(kind_phys), dimension(:), intent(inout)  nirdfdi,
real(kind_phys), dimension(:), intent(inout)  visbmdi,
real(kind_phys), dimension(:), intent(inout)  visdfdi,
real(kind_phys), dimension(:), intent(inout)  nirbmui,
real(kind_phys), dimension(:), intent(inout)  nirdfui,
real(kind_phys), dimension(:), intent(inout)  visbmui,
real(kind_phys), dimension(:), intent(inout)  visdfui,
real(kind_phys), dimension(:), intent(in)  sfc_alb_nir_dir,
real(kind_phys), dimension(:), intent(in)  sfc_alb_nir_dif,
real(kind_phys), dimension(:), intent(in)  sfc_alb_uvvis_dir,
real(kind_phys), dimension(:), intent(in)  sfc_alb_uvvis_dif,
real(kind_phys), dimension(:), intent(inout)  sfcnsw,
real(kind_phys), dimension(:), intent(inout)  sfcdsw,
real(kind_phys), dimension(:,:), intent(inout)  gu0,
real(kind_phys), dimension(:,:), intent(inout)  gv0,
real(kind_phys), dimension(:,:), intent(inout)  gt0,
real(kind_phys), dimension(:,:,:), intent(inout)  gq0,
real(kind_phys), dimension(:,:), intent(inout)  dudt,
real(kind_phys), dimension(:,:), intent(inout)  dvdt,
real(kind_phys), dimension(:,:), intent(inout)  dtdt,
real(kind_phys), dimension(:,:,:), intent(inout)  dqdt,
real(kind_phys), dimension(:,:), intent(out)  ten_t,
real(kind_phys), dimension(:,:), intent(out)  ten_u,
real(kind_phys), dimension(:,:), intent(out)  ten_v,
real(kind_phys), dimension(:,:,:), intent(out)  ten_q,
character(len=*), intent(out)  errmsg,
integer, intent(out)  errflg 
)

Argument Table

This routine needs to be called AFTER the RRTMG (radlw_main.F90 and radsw_main.F90) or the RRTMGP (rrtmgp_lw_main.F90 and rrtmgp_sw_main.F90) radiation schemes in the CCPP enabled UFS.

For RRTMG, not much is done here, since the scheme outputs the fields needed by the UFS. For example, RRTMG provides the heating-rate profiles and has been modified to use UFS native DDTs for storing the fluxes.

For RRTMGP*:

  • The all-sky radiation tendency is computed. The clear-sky tendency is computed, if requested.
  • Surface and TOA fluxes are copied to UFS native DDTs that persist between radiation/physics calls.

*Note on RTE-RRTMGP implementation in CCPP This is done in an attempt to make the CCPP enabled RRTMGP LW/SW drivers more host agnostic. The drivers are outputting the same fields as RTE, flux profiles, maintaining the same scheme interface at the lowest CCPP entrypoint, the "Scheme-level" interstitial. Any host specific coupling to the scheme happens here, a layer above, within the "Suite-level" interstitial.

For ALL Radiaiton Schemes:

  • Compute SW total cloud albedo
  • Compute diagnostics
    Parameters
    [in]idxdayIndex array for daytime points
    [in]do_sw_clrsky_hrOutput clear-sky SW heating-rate?
    [in]deltphysics timestep
    [in]coszdgDaytime mean cosz over rad call period
    [in]sfc_alb_uvvis_difSurface albedo (diffuse)
    [in]p_levPressure @ model layer-interfaces (Pa)
    [in]fluxswdown_allskyRRTMGP shortwave all-sky flux (W/m2)
    [in]aerodpVertical integrated optical depth for <nspc1> aerosol species
    [in]cldtaulw10mu band layer cloud optical depth (LW)
    [in]cldsaFraction of clouds for High/Mid/Low diagnostics:
    [in]cldsalow(1), middle(2), high(3), total(4) and BL(5)
    [in]mbotaVertical indices for low, middle and high cloud bases (H/M/L diag)
    [in]scmpsw2D surface fluxes, components:
    [in,out]sfcdswSW sfc all-sky downward flux (W/m2)
    [in,out]htrswSW all-sky heating rate (K/s)
    [in,out]total_albedoTotal sky albedo at TOA (W/m2)
    [in,out]htrlwuLW all-sky heating-rate updated in-between radiation calls.
    [in,out]sfcflwLW radiation fluxes at sfc
    [in,out]sfcfswSW radiation fluxes at sfc
    [in,out]topfswSW fluxes at top atmosphere
    [in,out]topflwLW fluxes at top atmosphere
    [in,out]fluxrLW/SW diagnostics
    [out]errmsgCCPP error message
    [out]errflgCCPP error code
    [in,out]htrswcSW clear-sky heating rate (K/s)
Parameters
dolwradLogical flags for lw radiation calls
doswradLogical flags for sw radiation calls
lssavFlag for radiation diagnostics
fhlwrFrequency for longwave radiation (sec)
fhswrFrequency for shortwave radiation (sec)
coszenMean cos of zenith angle over rad call period
raddtRadiation time step (sec)
mtopaVertical indices for low, middle and high cloud tops (H/M/L diag)
cldtausw.55mu band layer cloud optical depth (SW)
kbVertical index difference between layer and lower bound (H/M/L diag)
kdVertical index difference between in/out and local (H/M/L diag)
ktVertical index difference between layer and upper bound (H/M/L diag)
ncolHorizontal loop extent
nlevNumber of vertical layers
ntracnumber of tracers
lmkNumber of vertical layers for radiation (adjusted)
ndayNumber of daylit columns
nfxrNumber of variables stored in the fluxr array
nspc1Number of species for output aerosol optical depth
do_rrtmgpFlag for using RRTMGP scheme
do_lw_clrsky_hrOutput clear-sky LW heating-rate?
fluxlwup_clrskyRRTMGP longwave clear-sky flux (W/m2)
fluxlwdown_clrskyRRTMGP longwave clear-sky flux (W/m2)
htrlwcLW clear-sky heating-rate (K/s)
fluxlwup_allskyRRTMGP longwave all-sky flux (W/m2)
fluxlwdown_allskyRRTMGP longwave all-sky flux (W/m2)
htrlwLW all-sky heating rate (K/s)
fluxswup_clrskyRRTMGP shortwave clear-sky flux (W/m2)
fluxswdown_clrskyRRTMGP shortwave clear-sky flux (W/m2)
fluxswup_allskyRRTMGP shortwave all-sky flux (W/m2)
isfcVertical index for surface level
itoaVertical index for TOA level
tsflwLW sfc air temp during calculation (K)
tsfaLowest model layer air temperature for radiation (K)
sfcdlwLW sfc all-sky downward flux (W/m2)
sfculwLW sfc all-sky upward flux (W/m2)
nirbmdiSW sfc nir beam downward flux (W/m2)
nirdfdiSW sfc nir diff downward flux (W/m2)
visbmdiSW sfc uv+vis beam downward flux (W/m2)
visdfdiSW sfc uv+vis diff downward flux (W/m2)
nirbmuiSW sfc nir beam upward flux (W/m2)
nirdfuiSW sfc nir diff upward flux (W/m2)
visbmuiSW sfc uv+vis beam upward flux (W/m2)
visdfuiSW sfc uv+vis diff upward flux (W/m2)
sfc_alb_nir_dirSurface albedo (direct)
sfc_alb_nir_difSurface albedo (diffuse)
sfc_alb_uvvis_dirSurface albedo (direct)
sfcnswSW sfc all-sky net flux (W/m2) flux into ground