CCPP SciDoc  v6.0.0
Common Community Physics Package Developed at DTC

◆ setalb()

subroutine, public module_radiation_surface::setalb ( real (kind=kind_phys), dimension(:), intent(in)  slmsk,
integer, intent(in)  lsm,
integer, intent(in)  lsm_noahmp,
integer, intent(in)  lsm_ruc,
logical, intent(in)  use_cice_alb,
real (kind=kind_phys), dimension(:), intent(in)  snodi,
real (kind=kind_phys), dimension(:), intent(in)  sncovr,
real (kind=kind_phys), dimension(:), intent(in)  sncovr_ice,
real (kind=kind_phys), dimension(:), intent(in)  snoalb,
real (kind=kind_phys), dimension(:), intent(in)  zorlf,
real (kind=kind_phys), dimension(:), intent(in)  coszf,
real (kind=kind_phys), dimension(:), intent(in)  tsknf,
real (kind=kind_phys), dimension(:), intent(in)  tairf,
real (kind=kind_phys), dimension(:), intent(in)  hprif,
logical, intent(in)  frac_grid,
real (kind=kind_phys), dimension(:), intent(in)  lakefrac,
real (kind=kind_phys), dimension(:), intent(in)  alvsf,
real (kind=kind_phys), dimension(:), intent(in)  alnsf,
real (kind=kind_phys), dimension(:), intent(in)  alvwf,
real (kind=kind_phys), dimension(:), intent(in)  alnwf,
real (kind=kind_phys), dimension(:), intent(in)  facsf,
real (kind=kind_phys), dimension(:), intent(in)  facwf,
real (kind=kind_phys), dimension(:), intent(in)  fice,
real (kind=kind_phys), dimension(:), intent(in)  tisfc,
real (kind=kind_phys), dimension(:), intent(inout)  lsmalbdvis,
real (kind=kind_phys), dimension(:), intent(inout)  lsmalbdnir,
real (kind=kind_phys), dimension(:), intent(inout)  lsmalbivis,
real (kind=kind_phys), dimension(:), intent(inout)  lsmalbinir,
real (kind=kind_phys), dimension(:), intent(in)  icealbdvis,
real (kind=kind_phys), dimension(:), intent(in)  icealbdnir,
real (kind=kind_phys), dimension(:), intent(in)  icealbivis,
real (kind=kind_phys), dimension(:), intent(in)  icealbinir,
integer, intent(in)  IMAX,
real (kind=kind_phys), dimension(:), intent(in)  albPpert,
real (kind=kind_phys), intent(in)  pertalb,
real (kind=kind_phys), dimension(:), intent(in)  fracl,
real (kind=kind_phys), dimension(:), intent(in)  fraco,
real (kind=kind_phys), dimension(:), intent(in)  fraci,
logical, dimension(:), intent(in)  icy,
real (kind=kind_phys), dimension(imax,nf_albd), intent(out)  sfcalb 
)
Parameters
slmsk(IMAX), sea(0),land(1),ice(2) mask on fcst model grid
snodi(IMAX), snow depth water equivalent in mm over ice
sncovr(IMAX), snow cover over land
snoalb(IMAX), maximum snow albedo over land (for deep snow)
zorlf(IMAX), surface roughness in cm
coszf(IMAX), cosin of solar zenith angle
tsknf(IMAX), ground surface temperature in K
tairf(IMAX), lowest model layer air temperature in K
hprif(IMAX), topographic sdv in m
— for ialbflg=0 climtological albedo scheme —
alvsf(IMAX), 60 degree vis albedo with strong cosz dependency
alnsf(IMAX), 60 degree nir albedo with strong cosz dependency
alvwf(IMAX), 60 degree vis albedo with weak cosz dependency
alnwf(IMAX), 60 degree nir albedo with weak cosz dependency
— for ialbflg=1 MODIS based land albedo scheme —
alvsf(IMAX), visible black sky albedo at zenith 60 degree
alnsf(IMAX), near-ir black sky albedo at zenith 60 degree
alvwf(IMAX), visible white sky albedo
alnwf(IMAX), near-ir white sky albedo
facsf(IMAX), fractional coverage with strong cosz dependency
facwf(IMAX), fractional coverage with weak cosz dependency
fice(IMAX), sea-ice fraction
tisfc(IMAX), sea-ice surface temperature
IMAXarray horizontal dimension
albppert(IMAX), a probability value in the interval [0,1]
pertalb(5), magnitude of perturbation of surface albedo
sfcalb(IMAX,NF_ALBD), mean sfc albedo
( :, 1) - near ir direct beam albedo
( :, 2) - near ir diffused albedo
( :, 3) - uv+vis direct beam albedo
( :, 4) - uv+vis diffused albedo

setalb General Algorithm

  • Use modis based albedo for land area:
  • Use snow cover input directly for land model, no conversion needed.
  • use Fanglin's zenith angle treatment.
  1. use land model output for land area: Noah MP, RUC (land and ice).
  • Call ppebet () to perturb all 4 elements of surface albedo sfcalb(:,1:4).

References csnow(), epsln, f_one, f_zero, and surface_perturbation::ppfbet().

Referenced by gfs_radiation_surface::gfs_radiation_surface_run().

Here is the call graph for this function:
Here is the caller graph for this function: