!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
! ###################################################
SUBROUTINE AVERAGED_TSRAD_TEB(PEMIS_ROOF,PTS_ROOF, &,4
PEMIS_ROAD,PTS_ROAD, &
PEMIS_WALL,PTS_WALL, &
TSNOW_ROOF,TSNOW_ROAD, &
PBLD,PWALL_O_HOR, &
PSVF_ROAD,PSVF_WALL, &
PEMIS,PTSRAD )
! ###################################################
!
!!**** *AVERAGED_TSRAD_TEB* computes averaged emissivity and radiative surface
!! temperature for TEB scheme
!!
!! PURPOSE
!! -------
!!
!! METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!! REFERENCE
!! ---------
!!
!! AUTHOR
!! ------
!!
!! V. Masson Meteo-France
!!
!! MODIFICATION
!! ------------
!!
!! Original 01/2004
!----------------------------------------------------------------------------
!
!* 0. DECLARATION
! -----------
!
USE MODD_TYPE_SNOW
!
USE MODD_CSTS
, ONLY : XSTEFAN
!
USE MODI_URBAN_LW_COEF
!
USE MODE_SURF_SNOW_FRAC
!
IMPLICIT NONE
!
!* 0.1 Declaration of arguments
! ------------------------
!
REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ROOF ! roof emissivity
REAL, DIMENSION(:), INTENT(IN) :: PTS_ROOF ! roof surface temperature
REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ROAD ! road emissivity
REAL, DIMENSION(:), INTENT(IN) :: PTS_ROAD ! road surface temperature
REAL, DIMENSION(:), INTENT(IN) :: PEMIS_WALL ! wall emissivity
REAL, DIMENSION(:), INTENT(IN) :: PTS_WALL ! wall surface temperature
TYPE(SURF_SNOW), INTENT(IN) :: TSNOW_ROOF ! snow on roofs
TYPE(SURF_SNOW), INTENT(IN) :: TSNOW_ROAD ! snow on roads
REAL, DIMENSION(:), INTENT(IN) :: PBLD ! building fraction
REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_HOR! vertical surf. / horizontal surf.
REAL, DIMENSION(:), INTENT(IN) :: PSVF_ROAD ! sky-view-factor from roads
REAL, DIMENSION(:), INTENT(IN) :: PSVF_WALL ! sky-view-factor from walls
REAL, DIMENSION(:), INTENT(OUT):: PEMIS ! averaged emissivity (all tiles)
REAL, DIMENSION(:), INTENT(OUT):: PTSRAD ! averaged radiaitve temp. (all tiles)
!
!
!* 0.2 Declaration of local variables
! ------------------------------
!
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZDN_ROOF ! snow fraction
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZDN_ROAD ! on the surface
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZDF_ROOF ! free-snow fraction
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZDF_ROAD ! on the surface
LOGICAL, DIMENSION(SIZE(PEMIS_ROOF)) :: GMASK ! .false. (= no snow precip.)
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_W_TO_W ! longwave exchange coefficients
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_N_TO_W
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_W_TO_N
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_N_TO_N
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_S_TO_W
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_S_TO_N
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_R_TO_W
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_R_TO_N
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_S_TO_R
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_N_TO_R
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_R_TO_R
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_W_TO_R
!
REAL :: ZLW_RAD ! incoming LW to mimic
! ! radiation behaviour of town
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZABS_LW_WALL! longwave absorbed by walls
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZABS_LW_ROAD! longwave absorbed by roads
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZABS_LW_ROOF! longwave absorbed by roofs
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZABS_LW_SNOW_ROAD! longwave absorbed by snow
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZABS_LW_SNOW_ROOF! on roads and roofs
REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZLW_UP ! outgoing longwave
!
!-------------------------------------------------------------------------------
!
!* snow fractions
! --------------
!
GMASK(:) = .FALSE.
CALL SNOW_FRAC_ROAD(TSNOW_ROAD%WSNOW(:,1,1),GMASK,ZDN_ROAD,ZDF_ROAD)
CALL SNOW_FRAC_ROOF(TSNOW_ROOF%WSNOW(:,1,1),GMASK,ZDN_ROOF,ZDF_ROOF)
!
!* long-wave trapping coefficients
! -------------------------------
!
CALL URBAN_LW_COEF(TSNOW_ROAD%EMIS(:,1), PSVF_ROAD, PEMIS_WALL, PSVF_WALL, &
ZDF_ROAD, ZDN_ROAD, PEMIS_ROAD, &
ZLW_W_TO_W, ZLW_N_TO_W, ZLW_W_TO_N, ZLW_N_TO_N, &
ZLW_S_TO_W, ZLW_S_TO_N, ZLW_R_TO_W, ZLW_R_TO_N )
!
CALL URBAN_LW_COEF(PEMIS_ROAD, PSVF_ROAD, PEMIS_WALL, PSVF_WALL, &
ZDN_ROAD, ZDF_ROAD, TSNOW_ROAD%EMIS(:,1), &
ZLW_W_TO_W, ZLW_R_TO_W, ZLW_W_TO_R, ZLW_R_TO_R, &
ZLW_S_TO_W, ZLW_S_TO_R, ZLW_N_TO_W, ZLW_N_TO_R )
!
!* town averaged emissivity
! ------------------------
!
PEMIS(:) = PBLD(:) *ZDF_ROOF(:)*PEMIS_ROOF(:) &
+ PBLD(:) *ZDN_ROOF(:)*TSNOW_ROOF%EMIS(:,1) &
+ (1.-PBLD(:))*ZDF_ROAD(:) *ZLW_S_TO_R(:) &
+ (1.-PBLD(:))*ZDN_ROAD(:) *ZLW_S_TO_N(:) &
+ PWALL_O_HOR(:) *ZLW_S_TO_W(:)
!
!* town radiative surface temperature
! ----------------------------------
!
! fixed incoming LW (W/m2)
ZLW_RAD=600.
!
! LW absorbed by roofs
ZABS_LW_ROOF(:) = PEMIS_ROOF(:) * (ZLW_RAD - XSTEFAN * PTS_ROOF(:)** 4)
!
! LW absorbed by roads
ZABS_LW_ROAD(:) = ZLW_S_TO_R(:)*ZLW_RAD &
+ ZLW_R_TO_R(:)*PTS_ROAD (:) **4 &
+ ZLW_W_TO_R(:)*PTS_WALL (:) **4 &
+ ZLW_N_TO_R(:)*TSNOW_ROAD%TS(:,1)**4
!
! LW absorbed by walls
ZABS_LW_WALL(:) = ZLW_S_TO_W(:)*ZLW_RAD &
+ ZLW_W_TO_W(:)*PTS_WALL (:) **4 &
+ ZLW_R_TO_W(:)*PTS_ROAD (:) **4 &
+ ZLW_N_TO_W(:)*TSNOW_ROAD%TS(:,1)**4
!
!* LW absorbed by snow on roof
ZABS_LW_SNOW_ROOF(:) = TSNOW_ROOF%EMIS(:,1)*ZLW_RAD &
+ TSNOW_ROOF%EMIS(:,1)*XSTEFAN*TSNOW_ROOF%TS(:,1)**4
!
!* LW absorbed by snow on road
ZABS_LW_SNOW_ROAD(:) = ZLW_S_TO_N(:)*ZLW_RAD &
+ ZLW_N_TO_N(:)*TSNOW_ROAD%TS(:,1)**4 &
+ ZLW_W_TO_N(:)*PTS_WALL (:) **4 &
+ ZLW_R_TO_N(:)*PTS_ROAD (:) **4
!
!* outgoing longwave radiation
ZLW_UP(:) = ZLW_RAD &
- ( PBLD(:) *ZDF_ROOF(:)*ZABS_LW_ROOF (:) &
+ PBLD(:) *ZDN_ROOF(:)*ZABS_LW_SNOW_ROOF(:) &
+(1.-PBLD(:)) *ZDF_ROAD(:)*ZABS_LW_ROAD (:) &
+(1.-PBLD(:)) *ZDN_ROAD(:)*ZABS_LW_SNOW_ROAD(:) &
+PWALL_O_HOR(:) *ZABS_LW_WALL (:) )
!
!* town radiative surface temperature
!
PTSRAD(:) = ((ZLW_UP(:) - ZLW_RAD*(1.-PEMIS(:))) /PEMIS(:)/XSTEFAN)**0.25
!-------------------------------------------------------------------------------
!
END SUBROUTINE AVERAGED_TSRAD_TEB