INTERFACE:
subroutine UrbanRadiation (nc, lbl, ubl, lbc, ubc, lbp, ubp, & num_nourbanl, filter_nourbanl, & num_urbanl, filter_urbanl, & num_urbanc, filter_urbanc, & num_urbanp, filter_urbanp)DESCRIPTION:
Solar fluxes absorbed and reflected by roof and canyon (walls, road). Also net and upward longwave fluxes.
USES:
use clmtype use clm_varcon , only : spval, icol_roof, icol_sunwall, icol_shadewall, & icol_road_perv, icol_road_imperv, sb use clm_varcon , only : tfrz ! To use new constant.. use clm_time_manager , only : get_curr_date, get_step_size use clm_atmlnd , only : clm_a2lARGUMENTS:
implicit none integer , intent(in) :: nc ! clump index integer, intent(in) :: lbl, ubl ! landunit-index bounds integer, intent(in) :: lbc, ubc ! column-index bounds integer, intent(in) :: lbp, ubp ! pft-index bounds integer , intent(in) :: num_nourbanl ! number of non-urban landunits in clump integer , intent(in) :: filter_nourbanl(ubl-lbl+1) ! non-urban landunit filter integer , intent(in) :: num_urbanl ! number of urban landunits in clump integer , intent(in) :: filter_urbanl(ubl-lbl+1) ! urban landunit filter integer , intent(in) :: num_urbanc ! number of urban columns in clump integer , intent(in) :: filter_urbanc(ubc-lbc+1) ! urban column filter integer , intent(in) :: num_urbanp ! number of urban pfts in clump integer , intent(in) :: filter_urbanp(ubp-lbp+1) ! urban pft filterCALLED FROM:
subroutine clm_driver1REVISION HISTORY:
Author: Gordon Bonan 03/2003, Mariana Vertenstein: Migrated to clm2.2 07/2004, Mariana Vertenstein: Migrated to clm3.0 01/2008, Erik Kluzek: Migrated to clm3.5.15LOCAL VARIABLES:
local pointers to original implicit in arguments (urban clump) real(r8), pointer :: canyon_hwr(:) ! ratio of building height to street width real(r8), pointer :: wtroad_perv(:) ! weight of pervious road wrt total road real(r8), pointer :: em_roof(:) ! roof emissivity real(r8), pointer :: em_improad(:) ! impervious road emissivity real(r8), pointer :: em_perroad(:) ! pervious road emissivity real(r8), pointer :: em_wall(:) ! wall emissivity local pointers to original implicit in arguments (clmtype) integer , pointer :: pgridcell(:) ! gridcell of corresponding pft integer , pointer :: pcolumn(:) ! column of corresponding pft integer , pointer :: lgridcell(:) ! gridcell of corresponding landunit integer , pointer :: ctype(:) ! column type integer , pointer :: coli(:) ! beginning column index for landunit integer , pointer :: colf(:) ! ending column index for landunit integer , pointer :: pfti(:) ! beginning pfti index for landunit integer , pointer :: pftf(:) ! ending pftf index for landunit real(r8), pointer :: londeg(:) ! longitude (degrees) real(r8), pointer :: forc_lwrad(:) ! downward infrared (longwave) radiation (W/m**2) real(r8), pointer :: forc_solad(:,:) ! direct beam radiation (vis=forc_sols , nir=forc_soll ) (W/m**2) real(r8), pointer :: forc_solai(:,:) ! diffuse beam radiation (vis=forc_sols , nir=forc_soll ) (W/m**2) real(r8), pointer :: forc_solar(:) ! incident solar radiation (W/m**2) real(r8), pointer :: albd(:,:) ! surface albedo (direct) real(r8), pointer :: albi(:,:) ! surface albedo (diffuse) real(r8), pointer :: t_grnd(:) ! ground temperature (K) real(r8), pointer :: frac_sno(:) ! fraction of ground covered by snow (0 to 1) real(r8), pointer :: t_ref2m(:) ! 2 m height surface air temperature (K) real(r8), pointer :: vf_sr(:) ! view factor of sky for road real(r8), pointer :: vf_wr(:) ! view factor of one wall for road real(r8), pointer :: vf_sw(:) ! view factor of sky for one wall real(r8), pointer :: vf_rw(:) ! view factor of road for one wall real(r8), pointer :: vf_ww(:) ! view factor of opposing wall for one wall real(r8), pointer :: sabs_roof_dir(:,:) ! direct solar absorbed by roof per unit ground area per unit incident flux real(r8), pointer :: sabs_roof_dif(:,:) ! diffuse solar absorbed by roof per unit ground area per unit incident flux real(r8), pointer :: sabs_sunwall_dir(:,:) ! direct solar absorbed by sunwall per unit wall area per unit incident flux real(r8), pointer :: sabs_sunwall_dif(:,:) ! diffuse solar absorbed by sunwall per unit wall area per unit incident flux real(r8), pointer :: sabs_shadewall_dir(:,:) ! direct solar absorbed by shadewall per unit wall area per unit incident flux real(r8), pointer :: sabs_shadewall_dif(:,:) ! diffuse solar absorbed by shadewall per unit wall area per unit incident flux real(r8), pointer :: sabs_improad_dir(:,:) ! direct solar absorbed by impervious road per unit ground area per unit incident flux real(r8), pointer :: sabs_improad_dif(:,:) ! diffuse solar absorbed by impervious road per unit ground area per unit incident flux real(r8), pointer :: sabs_perroad_dir(:,:) ! direct solar absorbed by pervious road per unit ground area per unit incident flux real(r8), pointer :: sabs_perroad_dif(:,:) ! diffuse solar absorbed by pervious road per unit ground area per unit incident flux local pointers to original implicit out arguments (clmtype) real(r8), pointer :: parsun(:) ! average absorbed PAR for sunlit leaves (W/m**2) real(r8), pointer :: parsha(:) ! average absorbed PAR for shaded leaves (W/m**2) real(r8), pointer :: sabg(:) ! solar radiation absorbed by ground (W/m**2) real(r8), pointer :: sabv(:) ! solar radiation absorbed by vegetation (W/m**2) real(r8), pointer :: fsa(:) ! solar radiation absorbed (total) (W/m**2) real(r8), pointer :: fsa_u(:) ! urban solar radiation absorbed (total) (W/m**2) real(r8), pointer :: fsr(:) ! solar radiation reflected (total) (W/m**2) real(r8), pointer :: fsds_vis_d(:) ! incident direct beam vis solar radiation (W/m**2) real(r8), pointer :: fsds_nir_d(:) ! incident direct beam nir solar radiation (W/m**2) real(r8), pointer :: fsds_vis_i(:) ! incident diffuse vis solar radiation (W/m**2) real(r8), pointer :: fsds_nir_i(:) ! incident diffuse nir solar radiation (W/m**2) real(r8), pointer :: fsr_vis_d(:) ! reflected direct beam vis solar radiation (W/m**2) real(r8), pointer :: fsr_nir_d(:) ! reflected direct beam nir solar radiation (W/m**2) real(r8), pointer :: fsr_vis_i(:) ! reflected diffuse vis solar radiation (W/m**2) real(r8), pointer :: fsr_nir_i(:) ! reflected diffuse nir solar radiation (W/m**2) real(r8), pointer :: fsds_vis_d_ln(:) ! incident direct beam vis solar rad at local noon (W/m**2) real(r8), pointer :: fsds_nir_d_ln(:) ! incident direct beam nir solar rad at local noon (W/m**2) real(r8), pointer :: fsr_vis_d_ln(:) ! reflected direct beam vis solar rad at local noon (W/m**2) real(r8), pointer :: fsr_nir_d_ln(:) ! reflected direct beam nir solar rad at local noon (W/m**2) real(r8), pointer :: eflx_lwrad_out(:) ! emitted infrared (longwave) radiation (W/m**2) real(r8), pointer :: eflx_lwrad_net(:) ! net infrared (longwave) rad (W/m**2) [+ = to atm] real(r8), pointer :: eflx_lwrad_net_u(:) ! urban net infrared (longwave) rad (W/m**2) [+ = to atm] !OTHER LOCAL VARIABLES