next up previous contents
Next: Fortran: Module Interface RtmMapMod Up: Fortran: Module Interface UrbanMod Previous: UrbanClumpInit   Contents

UrbanFluxes


INTERFACE:

   subroutine UrbanFluxes (nc, lbp, ubp, lbl, ubl, lbc, ubc, &
                           num_nourbanl, filter_nourbanl, &
                           num_urbanl, filter_urbanl, &
                           num_urbanc, filter_urbanc, &
                           num_urbanp, filter_urbanp)
DESCRIPTION:

Turbulent and momentum fluxes from urban canyon (consisting of roof, sunwall, shadewall, pervious and impervious road).


USES:

     use clmtype
     use clm_varcon         , only : cpair, vkc, spval, icol_roof, icol_sunwall, &
                                     icol_shadewall, icol_road_perv, icol_road_imperv, &
                                     grav, pondmx_urban, rpi, rgas, &
                                     ht_wasteheat_factor, ac_wasteheat_factor, &
                                     wasteheat_limit
     use filterMod          , only : filter
     use FrictionVelocityMod, only : FrictionVelocity, MoninObukIni
     use QSatMod            , only : QSat
     use clm_varpar         , only : maxpatch_urb, nlevurb
     use clm_time_manager   , only : get_curr_date, get_step_size, get_nstep
     use clm_atmlnd         , only : clm_a2l
ARGUMENTS:
     implicit none
     integer , intent(in) :: nc                         ! clump index
     integer, intent(in)  :: lbp, ubp                   ! pft-index bounds
     integer, intent(in)  :: lbl, ubl                   ! landunit-index bounds
     integer, intent(in)  :: lbc, ubc                   ! column-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 filter
CALLED FROM:
   subroutine clm_driver1
REVISION HISTORY:
   Author: Keith Oleson 10/2005
LOCAL VARIABLES:
   local pointers to original implicit in arguments (urban clump)
     real(r8), pointer :: ht_roof(:)         ! height of urban roof (m)
     real(r8), pointer :: wtlunit_roof(:)    ! weight of roof with respect to landunit
     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 :: wind_hgt_canyon(:) ! height above road at which wind in canyon is to be computed (m)
   local pointers to original implicit in arguments (clmtype)
     real(r8), pointer :: forc_u(:)     ! atmospheric wind speed in east direction (m/s)
     real(r8), pointer :: forc_v(:)     ! atmospheric wind speed in north direction (m/s)
     real(r8), pointer :: forc_rho(:)   ! density (kg/m**3)
     real(r8), pointer :: forc_hgt_u_pft(:) ! observational height of wind at pft-level (m)
     real(r8), pointer :: forc_hgt_t_pft(:) ! observational height of temperature at pft-level (m)
     real(r8), pointer :: forc_q(:)     ! atmospheric specific humidity (kg/kg)
     real(r8), pointer :: forc_t(:)     ! atmospheric temperature (K)
     real(r8), pointer :: forc_th(:)    ! atmospheric potential temperature (K)
     real(r8), pointer :: forc_pbot(:)  ! atmospheric pressure (Pa)
 
     real(r8), pointer :: z_0_town(:)   ! momentum roughness length of urban landunit (m)
     real(r8), pointer :: z_d_town(:)   ! displacement height of urban landunit (m)
 
     integer , pointer :: pgridcell(:)  ! gridcell of corresponding pft
     integer , pointer :: pcolumn(:)    ! column of corresponding pft
     integer , pointer :: lgridcell(:)  ! gridcell of corresponding landunit
     integer , pointer :: plandunit(:)  ! pft's landunit index
     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 pft index for landunit 
     integer , pointer :: pftf(:)       ! ending pft index for landunit
 
     real(r8), pointer :: taf(:)        ! urban canopy air temperature (K)
     real(r8), pointer :: qaf(:)        ! urban canopy air specific humidity (kg/kg)
     integer , pointer :: npfts(:)      ! landunit's number of pfts (columns)
     real(r8), pointer :: t_grnd(:)     ! ground surface temperature (K)
     real(r8), pointer :: qg(:)         ! specific humidity at ground surface (kg/kg)
     real(r8), pointer :: htvp(:)       ! latent heat of evaporation (/sublimation) (J/kg)
     real(r8), pointer :: dqgdT(:)      ! temperature derivative of "qg"
     real(r8), pointer :: eflx_traffic(:)        ! traffic sensible heat flux (W/m**2)
     real(r8), pointer :: eflx_traffic_factor(:) ! multiplicative urban traffic factor for sensible heat flux
     real(r8), pointer :: eflx_wasteheat(:)      ! sensible heat flux from urban heating/cooling sources of waste heat (W/m**2)
     real(r8), pointer :: eflx_heat_from_ac(:)   ! sensible heat flux put back into canyon due to removal by AC (W/m**2)
     real(r8), pointer :: t_soisno(:,:)          ! soil temperature (K)
     real(r8), pointer :: eflx_urban_ac(:)     ! urban air conditioning flux (W/m**2)
     real(r8), pointer :: eflx_urban_heat(:)   ! urban heating flux (W/m**2)
     real(r8), pointer :: londeg(:)            ! longitude (degrees)
     real(r8), pointer :: h2osoi_ice(:,:)      ! ice lens (kg/m2)
     real(r8), pointer :: h2osoi_liq(:,:)      ! liquid water (kg/m2)
     real(r8), pointer :: frac_sno(:)          ! fraction of ground covered by snow (0 to 1)
     real(r8), pointer :: snowdp(:)            ! snow height (m)
     real(r8), pointer :: h2osno(:)            ! snow water (mm H2O)
     integer , pointer :: snl(:)               ! number of snow layers
     real(r8), pointer :: rootr_road_perv(:,:) ! effective fraction of roots in each soil layer for urban pervious road
     real(r8), pointer :: soilalpha_u(:)       ! Urban factor that reduces ground saturated specific humidity (-)
   local pointers to original implicit out arguments
     real(r8), pointer :: dlrad(:)         ! downward longwave radiation below the canopy (W/m**2)
     real(r8), pointer :: ulrad(:)         ! upward longwave radiation above the canopy (W/m**2)
     real(r8), pointer :: cgrnds(:)        ! deriv, of soil sensible heat flux wrt soil temp (W/m**2/K)
     real(r8), pointer :: cgrndl(:)        ! deriv of soil latent heat flux wrt soil temp (W/m**2/K)
     real(r8), pointer :: cgrnd(:)         ! deriv. of soil energy flux wrt to soil temp (W/m**2/K)
     real(r8), pointer :: taux(:)          ! wind (shear) stress: e-w (kg/m/s**2)
     real(r8), pointer :: tauy(:)          ! wind (shear) stress: n-s (kg/m/s**2)
     real(r8), pointer :: eflx_sh_grnd(:)  ! sensible heat flux from ground (W/m**2) [+ to atm]
     real(r8), pointer :: eflx_sh_tot(:)   ! total sensible heat flux (W/m**2) [+ to atm]
     real(r8), pointer :: eflx_sh_tot_u(:) ! urban total sensible heat flux (W/m**2) [+ to atm]
     real(r8), pointer :: qflx_evap_soi(:) ! soil evaporation (mm H2O/s) (+ = to atm)
     real(r8), pointer :: qflx_tran_veg(:) ! vegetation transpiration (mm H2O/s) (+ = to atm)
     real(r8), pointer :: qflx_evap_veg(:) ! vegetation evaporation (mm H2O/s) (+ = to atm)
     real(r8), pointer :: qflx_evap_tot(:) ! qflx_evap_soi + qflx_evap_can + qflx_tran_veg
     real(r8), pointer :: t_ref2m(:)       ! 2 m height surface air temperature (K)
     real(r8), pointer :: q_ref2m(:)       ! 2 m height surface specific humidity (kg/kg)
     real(r8), pointer :: t_ref2m_u(:)     ! Urban 2 m height surface air temperature (K)
     real(r8), pointer :: t_veg(:)         ! vegetation temperature (K)
     real(r8), pointer :: ram1(:)          ! aerodynamical resistance (s/m)
     real(r8), pointer :: rootr(:,:)       ! effective fraction of roots in each soil layer
     real(r8), pointer :: psnsun(:)        ! sunlit leaf photosynthesis (umol CO2 /m**2/ s)
     real(r8), pointer :: psnsha(:)        ! shaded leaf photosynthesis (umol CO2 /m**2/ s)
     real(r8), pointer :: t_building(:)    ! internal building temperature (K)
     real(r8), pointer :: rh_ref2m(:)      ! 2 m height surface relative humidity (%)
     real(r8), pointer :: rh_ref2m_u(:)    ! Urban 2 m height surface relative humidity (%)
   !OTHER LOCAL VARIABLES



Erik Kluzek 2011-06-15