Common Community Physics Package (CCPP) Scientific Documentation  Version 2.0
subroutine rrtmg_sw::spcvrtm ( real (kind=kind_phys), intent(in)  ssolar,
real (kind=kind_phys), intent(in)  cosz,
real (kind=kind_phys), intent(in)  sntz,
real (kind=kind_phys), dimension(2), intent(in)  albbm,
real (kind=kind_phys), dimension(2), intent(in)  albdf,
real (kind=kind_phys), dimension(ngptsw), intent(in)  sfluxzen,
real (kind=kind_phys), dimension(nlay,ngptsw), intent(in)  cldfmc,
real (kind=kind_phys), intent(in)  cf1,
real (kind=kind_phys), intent(in)  cf0,
real (kind=kind_phys), dimension(nlay,ngptsw), intent(in)  taug,
real (kind=kind_phys), dimension(nlay,ngptsw), intent(in)  taur,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(in)  tauae,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(in)  ssaae,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(in)  asyae,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(in)  taucw,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(in)  ssacw,
real (kind=kind_phys), dimension(nlay,nbdsw), intent(in)  asycw,
integer, intent(in)  nlay,
integer, intent(in)  nlp1,
real (kind=kind_phys), dimension(nlp1,nbdsw), intent(out)  fxupc,
real (kind=kind_phys), dimension(nlp1,nbdsw), intent(out)  fxdnc,
real (kind=kind_phys), dimension(nlp1,nbdsw), intent(out)  fxup0,
real (kind=kind_phys), dimension(nlp1,nbdsw), intent(out)  fxdn0,
real (kind=kind_phys), intent(out)  ftoauc,
real (kind=kind_phys), intent(out)  ftoau0,
real (kind=kind_phys), intent(out)  ftoadc,
real (kind=kind_phys), intent(out)  fsfcuc,
real (kind=kind_phys), intent(out)  fsfcu0,
real (kind=kind_phys), intent(out)  fsfcdc,
real (kind=kind_phys), intent(out)  fsfcd0,
real (kind=kind_phys), dimension(2), intent(out)  sfbmc,
real (kind=kind_phys), dimension(2), intent(out)  sfdfc,
real (kind=kind_phys), dimension(2), intent(out)  sfbm0,
real (kind=kind_phys), dimension(2), intent(out)  sfdf0,
real (kind=kind_phys), intent(out)  suvbfc,
real (kind=kind_phys), intent(out)  suvbf0 
)
private
Parameters
ssolarincoming solar flux at top
coszcosine solar zenith angle
sntzsecant solar zenith angle
albbmsurface albedo for direct beam radiation
albdfsurface albedo for diffused radiation
sfluxzenspectral distribution of incoming solar flux
cldfmclayer cloud fraction for g-point
cf1>0: cloudy sky, otherwise: clear sky
cf0=1-cf1
taugspectral optical depth for gases
tauroptical depth for rayleigh scattering
tauaeaerosols optical depth
ssaaeaerosols single scattering albedo
asyaeaerosols asymmetry factor
taucwweighted cloud optical depth
ssacwweighted cloud single scat albedo
asycwweighted cloud asymmetry factor
nlay,nlp1number of layers/levels
fxupctot sky upward flux
fxdnctot sky downward flux
fxup0clr sky upward flux
fxdn0clr sky downward flux
ftoauctot sky toa upwd flux
ftoau0clr sky toa upwd flux
ftoadctoa downward (incoming) solar flux
fsfcuctot sky sfc upwd flux
fsfcu0clr sky sfc upwd flux
fsfcdctot sky sfc dnwd flux
fsfcd0clr sky sfc dnwd flux
sfbmctot sky sfc dnwd beam flux (nir/uv+vis)
sfdfctot sky sfc dnwd diff flux (nir/uv+vis)
sfbm0clr sky sfc dnwd beam flux (nir/uv+vis)
sfdf0clr sky sfc dnwd diff flux (nir/uv+vis)
suvbfctot sky sfc dnwd uv-b flux
suvbf0clr sky sfc dnwd uv-b flux

spcvrtm General Algorithm

  1. Initialize output fluxes.
  2. Loop over all g-points in each band.
  3. Set up toa direct beam and surface values (beam and diff).
  4. Compute clear-sky optical parameters, layer reflectance and transmittance.
    • Saving clear-sky quantities for later total-sky usage.
    • Delta scaling for clear-sky condition.
    • Perform general two-stream expressions:
      control parameters in module "physparam"
      iswmode - control flag for 2-stream transfer schemes
      = 1 delta-eddington (joseph et al., 1976)
      = 2 pifm (zdunkowski et al., 1980)
      = 3 discrete ordinates (liou, 1973)
    • Compute homogeneous reflectance and transmittance.
    • Calculate direct beam transmittance. use exponential lookup table for transmittance, or expansion of exponential for low optical depth.
    • Calculate pre-delta-scaling clear and cloudy direct beam transmittance.
  5. Call vrtqdr(), to compute the upward and downward radiation fluxes.
  6. Compute upward and downward fluxes at levels.
  7. Compute surface downward beam/diffuse flux components.
  8. Compute total sky optical parameters, layer reflectance and transmittance.
    • Set up toa direct beam and surface values (beam and diff).
    • Perform delta scaling for total-sky condition.
    • Perform general two-stream expressions.
    • Compute homogeneous reflectance and transmittance for both convertive and non-convertive scattering.
    • Calculate pre-delta-scaling clear and cloudy direct beam transmittance.
  9. Call vrtqdr(), to perform vertical quadrature
  10. Process and save outputs.
    • surface downward beam/diffused flux components
    • uv-b surface downward flux
    • surface downward beam/diffused flux components
    • uv-b surface downward flux

References physparam::iswmode, and vrtqdr().

Referenced by rrtmg_sw_run().

Here is the call graph for this function: