INTERFACE:
subroutine net_solar (lbl, ubl, num_urbanl, filter_urbanl, coszen, canyon_hwr, wtroad_perv, sdir, sdif, & alb_improad_dir, alb_perroad_dir, alb_wall_dir, alb_roof_dir, & alb_improad_dif, alb_perroad_dif, alb_wall_dif, alb_roof_dif, & sdir_road, sdir_sunwall, sdir_shadewall, & sdif_road, sdif_sunwall, sdif_shadewall, & sref_improad_dir, sref_perroad_dir, sref_sunwall_dir, sref_shadewall_dir, sref_roof_dir, & sref_improad_dif, sref_perroad_dif, sref_sunwall_dif, sref_shadewall_dif, sref_roof_dif)DESCRIPTION:
Solar radiation absorbed by road and both walls in urban canyon allowing for multiple reflection.
USES:
use shr_kind_mod, only : r8 => shr_kind_r8 use clmtypeARGUMENTS:
implicit none integer, intent(in) :: lbl, ubl ! landunit-index bounds integer , intent(in) :: num_urbanl ! number of urban landunits integer , intent(in) :: filter_urbanl(ubl-lbl+1) ! urban landunit filter real(r8), intent(in) :: coszen(num_urbanl) ! cosine solar zenith angle real(r8), intent(in) :: canyon_hwr(num_urbanl) ! ratio of building height to street width real(r8), intent(in) :: wtroad_perv(num_urbanl) ! weight of pervious road wrt total road real(r8), intent(in) :: sdir(num_urbanl, numrad) ! direct beam solar radiation incident on horizontal surface real(r8), intent(in) :: sdif(num_urbanl, numrad) ! diffuse solar radiation on horizontal surface real(r8), intent(in) :: alb_improad_dir(num_urbanl, numrad) ! direct impervious road albedo real(r8), intent(in) :: alb_perroad_dir(num_urbanl, numrad) ! direct pervious road albedo real(r8), intent(in) :: alb_wall_dir(num_urbanl, numrad) ! direct wall albedo real(r8), intent(in) :: alb_roof_dir(num_urbanl, numrad) ! direct roof albedo real(r8), intent(in) :: alb_improad_dif(num_urbanl, numrad) ! diffuse impervious road albedo real(r8), intent(in) :: alb_perroad_dif(num_urbanl, numrad) ! diffuse pervious road albedo real(r8), intent(in) :: alb_wall_dif(num_urbanl, numrad) ! diffuse wall albedo real(r8), intent(in) :: alb_roof_dif(num_urbanl, numrad) ! diffuse roof albedo real(r8), intent(in) :: sdir_road(num_urbanl, numrad) ! direct beam solar radiation incident on road per unit incident flux real(r8), intent(in) :: sdir_sunwall(num_urbanl, numrad) ! direct beam solar radiation (per unit wall area) incident on sunlit wall per unit incident flux real(r8), intent(in) :: sdir_shadewall(num_urbanl, numrad) ! direct beam solar radiation (per unit wall area) incident on shaded wall per unit incident flux real(r8), intent(in) :: sdif_road(num_urbanl, numrad) ! diffuse solar radiation incident on road per unit incident flux real(r8), intent(in) :: sdif_sunwall(num_urbanl, numrad) ! diffuse solar radiation (per unit wall area) incident on sunlit wall per unit incident flux real(r8), intent(in) :: sdif_shadewall(num_urbanl, numrad) ! diffuse solar radiation (per unit wall area) incident on shaded wall per unit incident flux real(r8), intent(inout) :: sref_improad_dir(num_urbanl, numrad) ! direct solar rad reflected by impervious road (per unit ground area) per unit incident flux real(r8), intent(inout) :: sref_perroad_dir(num_urbanl, numrad) ! direct solar rad reflected by pervious road (per unit ground area) per unit incident flux real(r8), intent(inout) :: sref_improad_dif(num_urbanl, numrad) ! diffuse solar rad reflected by impervious road (per unit ground area) per unit incident flux real(r8), intent(inout) :: sref_perroad_dif(num_urbanl, numrad) ! diffuse solar rad reflected by pervious road (per unit ground area) per unit incident flux real(r8), intent(inout) :: sref_sunwall_dir(num_urbanl, numrad) ! direct solar rad reflected by sunwall (per unit wall area) per unit incident flux real(r8), intent(inout) :: sref_sunwall_dif(num_urbanl, numrad) ! diffuse solar rad reflected by sunwall (per unit wall area) per unit incident flux real(r8), intent(inout) :: sref_shadewall_dir(num_urbanl, numrad) ! direct solar rad reflected by shadewall (per unit wall area) per unit incident flux real(r8), intent(inout) :: sref_shadewall_dif(num_urbanl, numrad) ! diffuse solar rad reflected by shadewall (per unit wall area) per unit incident flux real(r8), intent(inout) :: sref_roof_dir(num_urbanl, numrad) ! direct solar rad reflected by roof (per unit ground area) per unit incident flux real(r8), intent(inout) :: sref_roof_dif(num_urbanl, numrad) ! diffuse solar rad reflected by roof (per unit ground area) per unit incident flux local pointers to original implicit in arguments (clmtype) 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 fluxCALLED FROM:
subroutine UrbanAlbedo in this moduleREVISION HISTORY:
Author: Gordon Bonan !LOCAL VARIABLES