SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE AVERAGED_TSRAD_TEB(PEMIS_ROOF, PTS_ROOF, & 00003 PEMIS_ROAD, PTS_ROAD, & 00004 PEMIS_WALL, PTS_WALL_A, & 00005 PTS_WALL_B, & 00006 PEMIS_GARDEN, PTS_GARDEN, & 00007 PEMIS_GREENROOF, PTS_GREENROOF, & 00008 TSNOW_ROOF, TSNOW_ROAD, & 00009 PROAD, PFRAC_GR, PGARDEN, PBLD, & 00010 PWALL_O_HOR, PSVF_ROAD, & 00011 PSVF_WALL, PSVF_GARDEN, & 00012 PEMIS, PTSRAD, PT_WIN1, & 00013 PGR ) 00014 ! ################################################### 00015 ! 00016 !!**** *AVERAGED_TSRAD_TEB* computes averaged emissivity and radiative surface 00017 !! temperature for TEB scheme 00018 !! 00019 !! PURPOSE 00020 !! ------- 00021 !! 00022 !! METHOD 00023 !! ------ 00024 !! 00025 !! EXTERNAL 00026 !! -------- 00027 !! 00028 !! IMPLICIT ARGUMENTS 00029 !! ------------------ 00030 !! 00031 !! REFERENCE 00032 !! --------- 00033 !! 00034 !! AUTHOR 00035 !! ------ 00036 !! 00037 !! V. Masson Meteo-France 00038 !! 00039 !! MODIFICATION 00040 !! ------------ 00041 !! 09/2012 C. de Munck, A. Lemonsu : add green roofs 00042 !! 00043 !! Original 01/2004 00044 !---------------------------------------------------------------------------- 00045 ! 00046 !* 0. DECLARATION 00047 ! ----------- 00048 ! 00049 USE MODD_TYPE_SNOW 00050 ! 00051 USE MODD_SURF_PAR, ONLY : XUNDEF 00052 USE MODD_CSTS, ONLY : XSTEFAN 00053 ! 00054 USE MODI_URBAN_LW_COEF 00055 ! 00056 USE MODE_SURF_SNOW_FRAC 00057 ! 00058 ! 00059 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00060 USE PARKIND1 ,ONLY : JPRB 00061 ! 00062 IMPLICIT NONE 00063 ! 00064 !* 0.1 Declaration of arguments 00065 ! ------------------------ 00066 ! 00067 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ROOF ! roof emissivity 00068 REAL, DIMENSION(:), INTENT(IN) :: PTS_ROOF ! roof surface temperature 00069 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ROAD ! road emissivity 00070 REAL, DIMENSION(:), INTENT(IN) :: PTS_ROAD ! road surface temperature 00071 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_WALL ! wall emissivity 00072 REAL, DIMENSION(:), INTENT(IN) :: PTS_WALL_A ! wall surface temperature 00073 REAL, DIMENSION(:), INTENT(IN) :: PTS_WALL_B ! wall surface temperature 00074 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_GARDEN ! green area emissivity (snowfree) 00075 REAL, DIMENSION(:), INTENT(IN) :: PTS_GREENROOF ! green roof surf. temp. 00076 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_GREENROOF! green roof emissivity (snowfree) 00077 REAL, DIMENSION(:), INTENT(IN) :: PTS_GARDEN ! green area surf. temp. 00078 TYPE(SURF_SNOW), INTENT(IN) :: TSNOW_ROOF ! snow on roofs 00079 TYPE(SURF_SNOW), INTENT(IN) :: TSNOW_ROAD ! snow on roads 00080 REAL, DIMENSION(:), INTENT(IN) :: PROAD ! road fraction 00081 REAL, DIMENSION(:), INTENT(IN) :: PFRAC_GR ! green roof fraction 00082 REAL, DIMENSION(:), INTENT(IN) :: PGARDEN ! green area fraction 00083 REAL, DIMENSION(:), INTENT(IN) :: PBLD ! building fraction 00084 REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_HOR ! vertical surf. / horizontal surf. 00085 REAL, DIMENSION(:), INTENT(IN) :: PSVF_ROAD ! sky-view-factor from roads 00086 REAL, DIMENSION(:), INTENT(IN) :: PSVF_WALL ! sky-view-factor from walls 00087 REAL, DIMENSION(:), INTENT(IN) :: PSVF_GARDEN ! sky-view-factor from green areas 00088 REAL, DIMENSION(:), INTENT(OUT):: PEMIS ! averaged emissivity (all tiles) 00089 REAL, DIMENSION(:), INTENT(OUT):: PTSRAD ! averaged radiaitve temp. (all tiles) 00090 REAL, DIMENSION(:), INTENT(IN) :: PT_WIN1 ! 00091 REAL, DIMENSION(:), INTENT(IN) :: PGR ! 00092 ! 00093 ! 00094 !* 0.2 Declaration of local variables 00095 ! ------------------------------ 00096 ! 00097 REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZDN_ROOF ! snow fraction 00098 REAL, DIMENSION(SIZE(PEMIS_ROOF)) :: ZDN_ROAD ! on the surface 00099 REAL, DIMENSION(SIZE(PBLD)) :: ZDF_ROOF ! free-snow fraction 00100 REAL, DIMENSION(SIZE(PBLD)) :: ZDF_ROAD ! on the surface 00101 LOGICAL, DIMENSION(SIZE(PBLD)) :: GMASK ! .false. (= no snow precip.) 00102 ! 00103 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_WB ! longwave exchange coefficients 00104 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_R 00105 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WB_TO_R 00106 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_NR 00107 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WB_TO_NR 00108 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_G 00109 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WB_TO_G 00110 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WA_TO_WIN 00111 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WB_TO_WIN 00112 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_R_TO_WA 00113 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_R_TO_WB 00114 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_R_TO_WIN 00115 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_G_TO_WA 00116 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_G_TO_WB 00117 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_G_TO_WIN 00118 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_WA 00119 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_WB 00120 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_R 00121 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_NR 00122 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_G 00123 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_S_TO_WIN 00124 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_WA 00125 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_WB 00126 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_R 00127 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_NR 00128 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_WIN_TO_G 00129 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_NR_TO_WA 00130 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_NR_TO_WB 00131 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_NR_TO_WIN 00132 ! 00133 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_RAD ! incoming LW to mimic 00134 ! ! radiation behaviour of town 00135 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_WALL ! longwave absorbed by walls 00136 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_ROAD ! longwave absorbed by roads 00137 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_ROOF ! longwave absorbed by roofs 00138 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_SNOW_ROAD! longwave absorbed by snow 00139 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_SNOW_ROOF! on roads and roofs 00140 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_GARDEN ! longwave absorbed by gardens 00141 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_LW_GREENROOF! longwave absorbed by green roofs 00142 REAL, DIMENSION(SIZE(PBLD)) :: ZLW_UP ! outgoing longwave 00143 ! 00144 REAL, DIMENSION(SIZE(PBLD)) :: ZT_SKY 00145 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00146 ! 00147 !------------------------------------------------------------------------------- 00148 ! 00149 !* snow fractions 00150 ! -------------- 00151 ! 00152 IF (LHOOK) CALL DR_HOOK('AVERAGED_TSRAD_TEB',0,ZHOOK_HANDLE) 00153 GMASK(:) = .FALSE. 00154 CALL SNOW_FRAC_ROAD(TSNOW_ROAD%WSNOW(:,1,1),GMASK,ZDN_ROAD,ZDF_ROAD) 00155 CALL SNOW_FRAC_ROOF(TSNOW_ROOF%WSNOW(:,1,1),GMASK,ZDN_ROOF,ZDF_ROOF) 00156 ! 00157 ! fixed incoming LW (W/m2) 00158 ZLW_RAD(:)= XSTEFAN * (PTS_ROAD(:) ** 4) 00159 ! 00160 ! LW absorbed by roofs 00161 ZABS_LW_ROOF(:) = PEMIS_ROOF(:) * (ZLW_RAD(:) - XSTEFAN * PTS_ROOF(:)**4) 00162 ! 00163 !* LW absorbed by snow on roof 00164 ZABS_LW_SNOW_ROOF(:) = TSNOW_ROOF%EMIS(:,1) * (ZLW_RAD(:) - XSTEFAN * TSNOW_ROOF%TS(:,1)**4) 00165 ! 00166 !* town averaged emissivity 00167 PEMIS(:) = PBLD(:) * (1.-PFRAC_GR(:)) * (ZDF_ROOF(:)*PEMIS_ROOF (:) & 00168 + ZDN_ROOF(:)*TSNOW_ROOF%EMIS(:,1)) & 00169 + PBLD(:) * PFRAC_GR(:) * PEMIS_GREENROOF(:) 00170 00171 ! 00172 !* long-wave trapping coefficients 00173 ! ------------------------------- 00174 ! 00175 ZT_SKY(:) = (ZLW_RAD(:)/XSTEFAN)**0.25 00176 ! 00177 CALL URBAN_LW_COEF(PGR, PBLD, ZLW_RAD, & 00178 PEMIS_ROAD, PSVF_ROAD, PEMIS_WALL, PSVF_WALL, & 00179 PEMIS_GARDEN, PROAD, PGARDEN, & 00180 TSNOW_ROAD%EMIS(:,1), & 00181 PTS_ROAD, PTS_WALL_A, PTS_WALL_B, & 00182 PTS_ROAD, PTS_GARDEN, PT_WIN1, & 00183 ZLW_WA_TO_WB, ZLW_WA_TO_R, ZLW_WB_TO_R, & 00184 ZLW_WA_TO_NR,ZLW_WB_TO_NR, & 00185 ZLW_WA_TO_G, ZLW_WB_TO_G, & 00186 ZLW_WA_TO_WIN, ZLW_WB_TO_WIN, & 00187 ZLW_R_TO_WA, ZLW_R_TO_WB, ZLW_R_TO_WIN, & 00188 ZLW_G_TO_WA, ZLW_G_TO_WB, ZLW_G_TO_WIN, & 00189 ZLW_S_TO_WA, ZLW_S_TO_WB, ZLW_S_TO_R, & 00190 ZLW_S_TO_NR, ZLW_S_TO_G, ZLW_S_TO_WIN, & 00191 ZLW_WIN_TO_WA, ZLW_WIN_TO_WB, ZLW_WIN_TO_R, & 00192 ZLW_WIN_TO_NR, ZLW_WIN_TO_G, & 00193 ZLW_NR_TO_WA, ZLW_NR_TO_WB, ZLW_NR_TO_WIN ) 00194 ! 00195 ! 00196 !* town averaged emissivity 00197 ! ------------------------ 00198 ! 00199 PEMIS(:) = PEMIS(:) & 00200 + PROAD(:)*PSVF_ROAD(:)* (ZDF_ROAD(:)* PEMIS_ROAD(:) & 00201 + ZDN_ROAD(:)* TSNOW_ROAD%EMIS(:,1)) & 00202 + PWALL_O_HOR(:) * PSVF_WALL(:) * PEMIS_WALL(:) & 00203 + PGARDEN(:) * PSVF_GARDEN(:) * PEMIS_GARDEN(:) 00204 00205 ! 00206 ! LW absorbed by roads 00207 ZABS_LW_ROAD(:) = ZLW_S_TO_R (:) * (ZT_SKY (:) - PTS_ROAD(:)) & 00208 + ZLW_WA_TO_R (:) * (PTS_WALL_A(:) - PTS_ROAD(:)) & 00209 + ZLW_WB_TO_R (:) * (PTS_WALL_B(:) - PTS_ROAD(:)) & 00210 + ZLW_WIN_TO_R(:) * (PT_WIN1 (:) - PTS_ROAD(:)) 00211 00212 ! 00213 ! LW absorbed by walls 00214 ZABS_LW_WALL(:) =( ZLW_S_TO_WA(:) * (ZT_SKY(:) - PTS_WALL_A(:)) & 00215 + ZLW_R_TO_WA(:) * (PTS_ROAD(:) - PTS_WALL_A(:)) & 00216 + ZLW_G_TO_WA(:) * (PTS_GARDEN(:)- PTS_WALL_A(:)) & 00217 + ZLW_WIN_TO_WA(:)* (PT_WIN1(:) - PTS_WALL_A(:)) & 00218 + ZLW_S_TO_WB(:) * (ZT_SKY(:) - PTS_WALL_B(:)) & 00219 + ZLW_R_TO_WB(:) * (PTS_ROAD(:) - PTS_WALL_B(:)) & 00220 + ZLW_G_TO_WB(:) * (PTS_GARDEN(:)- PTS_WALL_B(:)) & 00221 + ZLW_WIN_TO_WB(:)* (PT_WIN1(:) - PTS_WALL_B(:)))& 00222 * 0.5 00223 00224 ! 00225 !* LW absorbed by snow on road 00226 ZABS_LW_SNOW_ROAD(:) = ZLW_S_TO_R (:) * (ZT_SKY(:) - TSNOW_ROAD%TS(:,1)) & 00227 + ZLW_WA_TO_NR (:) * (PTS_WALL_A(:) - TSNOW_ROAD%TS(:,1)) & 00228 + ZLW_WB_TO_NR (:) * (PTS_WALL_B(:) - TSNOW_ROAD%TS(:,1)) & 00229 + ZLW_WIN_TO_NR(:) * (PT_WIN1(:) - TSNOW_ROAD%TS(:,1)) 00230 ! 00231 !* LW absorbed by gardens 00232 ZABS_LW_GARDEN(:) = ZLW_S_TO_G (:)*(ZT_SKY (:)-PTS_GARDEN(:)) & 00233 + ZLW_WA_TO_G (:)*(PTS_WALL_A(:)-PTS_GARDEN(:)) & 00234 + ZLW_WB_TO_G (:)*(PTS_WALL_B(:)-PTS_GARDEN(:)) & 00235 + ZLW_WIN_TO_G(:)*(PT_WIN1 (:)-PTS_GARDEN(:)) 00236 ! 00237 !* LW absorbed by green roofs 00238 ZABS_LW_GREENROOF(:) = PEMIS_GREENROOF(:) * (ZLW_RAD(:) - XSTEFAN * PTS_GREENROOF(:)** 4) 00239 00240 ! 00241 !* outgoing longwave radiation 00242 ZLW_UP(:) = ZLW_RAD(:) & 00243 - ( PBLD(:) *(1.-PFRAC_GR(:))*ZDF_ROOF(:)*ZABS_LW_ROOF (:) & 00244 +PBLD(:) *(1.-PFRAC_GR(:))*ZDN_ROOF(:)*ZABS_LW_SNOW_ROOF(:) & 00245 +PBLD(:) * PFRAC_GR(:) *ZABS_LW_GREENROOF(:) & 00246 +PROAD(:) *ZDF_ROAD(:)*ZABS_LW_ROAD (:) & 00247 +PROAD(:) *ZDN_ROAD(:)*ZABS_LW_SNOW_ROAD(:) & 00248 +PWALL_O_HOR(:) *ZABS_LW_WALL (:) & 00249 +PGARDEN(:) *ZABS_LW_GARDEN (:)) 00250 ! 00251 !* town radiative surface temperature 00252 PTSRAD(:) = ((ZLW_UP(:) - ZLW_RAD(:)*(1.-PEMIS(:))) /PEMIS(:)/XSTEFAN)**0.25 00253 ! 00254 IF (LHOOK) CALL DR_HOOK('AVERAGED_TSRAD_TEB',1,ZHOOK_HANDLE) 00255 !------------------------------------------------------------------------------- 00256 ! 00257 END SUBROUTINE AVERAGED_TSRAD_TEB