SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE AVERAGED_ALBEDO_TEB(HBEM, HROAD_DIR, HWALL_OPT, & 00003 PZENITH, PAZIM, & 00004 PBLD, PGARDEN, PROAD_DIR, PROAD, PFRAC_GR, & 00005 PWALL_O_HOR, PCAN_HW_RATIO, & 00006 PALB_ROOF, & 00007 PALB_ROAD, PSVF_ROAD, & 00008 PALB_WALL, PSVF_WALL, & 00009 PALB_GARDEN, PSVF_GARDEN, & 00010 PALB_GREENROOF, & 00011 TSNOW_ROOF, TSNOW_ROAD, & 00012 PGR, PSHGC, PSHGC_SH, PABS_WIN, PALB_WIN, & 00013 OSHAD_DAY, & 00014 PDIR_ALB_TOWN, PSCA_ALB_TOWN, PTRAN_WIN ) 00015 ! ################################################### 00016 ! 00017 !!**** *AVERAGED_ALBEDO_TEB* computes averaged albedo 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 !! 00042 !! Original 01/2004 00043 ! C. de Munck & A. Lemonsu 09/2011 Greenroofs 00044 !! G. Pigeon 09/2012 PTRAN_WIN as arguments 00045 !---------------------------------------------------------------------------- 00046 ! 00047 !* 0. DECLARATION 00048 ! ----------- 00049 ! 00050 USE MODD_SURF_PAR, ONLY : XUNDEF 00051 USE MODD_TYPE_SNOW 00052 ! 00053 USE MODI_URBAN_SOLAR_ABS 00054 USE MODE_SURF_SNOW_FRAC 00055 ! 00056 ! 00057 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00058 USE PARKIND1 ,ONLY : JPRB 00059 ! 00060 IMPLICIT NONE 00061 ! 00062 !* 0.1 Declaration of arguments 00063 ! ------------------------ 00064 ! 00065 CHARACTER(LEN=3), INTENT(IN) :: HBEM ! Building Energy model 'DEF' or 'BEM' 00066 CHARACTER(LEN=4), INTENT(IN) :: HROAD_DIR ! road direction options 00067 ! 'UNIF' : classical TEB version, all roads uniformely present 00068 ! 'ORIE' : specified road ORIEntation 00069 ! (in fact many roads direction 00070 ! possible because there can be many TEB patches) 00071 CHARACTER(LEN=4), INTENT(IN) :: HWALL_OPT ! wall options 00072 ! 'UNIF' : classical TEB version, all walls are uniform 00073 ! 'TWO ' : the two opposite walls receive different solar energy 00074 REAL, DIMENSION(:), INTENT(IN) :: PZENITH ! zenithal solar angle 00075 REAL, DIMENSION(:), INTENT(IN) :: PAZIM ! solar azimuthal angle 00076 ! ! (radian from N, clockwise) 00077 ! 00078 REAL, DIMENSION(:), INTENT(IN) :: PBLD ! building fraction 00079 REAL, DIMENSION(:), INTENT(IN) :: PGARDEN ! green area fraction 00080 REAL, DIMENSION(:), INTENT(IN) :: PROAD_DIR ! Road direction 00081 ! (° from N, clockwise) 00082 REAL, DIMENSION(:), INTENT(IN) :: PROAD ! road fraction 00083 REAL, DIMENSION(:), INTENT(IN) :: PFRAC_GR ! fraction of greenroof 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(IN) :: PCAN_HW_RATIO ! canyon height/width ratio 00089 ! 00090 REAL, DIMENSION(:), INTENT(IN) :: PALB_ROOF ! roof albedo 00091 REAL, DIMENSION(:), INTENT(IN) :: PALB_ROAD ! road albedo 00092 REAL, DIMENSION(:), INTENT(IN) :: PALB_WALL ! wall albedo 00093 REAL, DIMENSION(:), INTENT(IN) :: PALB_GARDEN ! green areas albedo 00094 REAL, DIMENSION(:), INTENT(IN) :: PALB_GREENROOF! green roof albedo 00095 TYPE(SURF_SNOW), INTENT(IN) :: TSNOW_ROOF ! snow on roofs 00096 TYPE(SURF_SNOW), INTENT(IN) :: TSNOW_ROAD ! snow on roads 00097 ! 00098 REAL, DIMENSION(:), INTENT(IN) :: PGR ! Glazing ratio 00099 REAL, DIMENSION(:), INTENT(IN) :: PSHGC ! Window solar transmittance 00100 REAL, DIMENSION(:), INTENT(IN) :: PSHGC_SH ! Window + shading solar heat gain coef. 00101 ! 00102 REAL, DIMENSION(:), INTENT(IN) :: PABS_WIN ! Window solar absortance 00103 REAL, DIMENSION(:), INTENT(OUT):: PALB_WIN ! Window solar reflectance 00104 LOGICAL, DIMENSION(:),INTENT(IN) :: OSHAD_DAY ! has shading been necessary this day ? 00105 ! 00106 REAL, DIMENSION(:), INTENT(OUT):: PDIR_ALB_TOWN ! direct albedo 00107 REAL, DIMENSION(:), INTENT(OUT):: PSCA_ALB_TOWN ! diffuse albedo 00108 REAL, DIMENSION(:), INTENT(IN) :: PTRAN_WIN ! window transmittance 00109 ! 00110 ! 00111 !* 0.2 Declaration of local variables 00112 ! ------------------------------ 00113 ! 00114 REAL, DIMENSION(SIZE(PBLD)) :: ZDN_ROOF ! snow fraction 00115 REAL, DIMENSION(SIZE(PBLD)) :: ZDN_ROAD ! on the surface 00116 REAL, DIMENSION(SIZE(PBLD)) :: ZDF_ROOF ! free-snow fraction 00117 REAL, DIMENSION(SIZE(PBLD)) :: ZDF_ROAD ! on the surface 00118 LOGICAL, DIMENSION(SIZE(PBLD)) :: GMASK ! .false. (= no snow precip.) 00119 ! 00120 ! 00121 REAL, DIMENSION(SIZE(PBLD)) :: ZDIR_SW ! direct and diffuse shortwave radiation 00122 REAL, DIMENSION(SIZE(PBLD)) :: ZSCA_SW ! to mimic radiation behaviour of town 00123 ! 00124 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_WALL_A ! shortwave absorbed by walls 00125 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_WALL_B ! shortwave absorbed by walls 00126 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_ROAD ! shortwave absorbed by roads 00127 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_ROOF ! shortwave absorbed by roofs 00128 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_GARDEN ! shortwave absorbed by green areas 00129 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_GREENROOF ! shortwave absorbed by green roofs 00130 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_SNOW_ROAD ! shortwave absorbed by snow 00131 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_SNOW_ROOF ! on roads, roofs, 00132 ! 00133 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_ROAD ! shortwave received by roads 00134 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_WALL_A ! shortwave received by walls 00135 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_WALL_B ! shortwave received by walls 00136 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_GARDEN ! shortwave received by green areas 00137 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_SNOW_ROAD ! shortwave received by snow on roads 00138 ! 00139 REAL, DIMENSION(SIZE(PBLD)) :: ZSW_RAD_GARDEN ! total solar radiation reaching green areas 00140 REAL, DIMENSION(SIZE(PBLD)) :: ZABS_SW_WIN ! shortwave absorbed by walls 00141 REAL, DIMENSION(SIZE(PBLD)) :: ZREC_SW_WIN ! shortwave received by walls 00142 REAL, DIMENSION(SIZE(PBLD)) :: ZREF_SW_GRND ! 00143 REAL, DIMENSION(SIZE(PBLD)) :: ZREF_SW_FAC ! 00144 REAL, DIMENSION(SIZE(PBLD)) :: ZTR_SW_WIN ! 00145 REAL, DIMENSION(SIZE(PBLD)) :: ZE_SHADING ! 00146 LOGICAL, DIMENSION(SIZE(PBLD)) :: GSHAD_DAY 00147 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00148 !------------------------------------------------------------------------------- 00149 ! 00150 !* snow fractions 00151 ! -------------- 00152 ! 00153 IF (LHOOK) CALL DR_HOOK('AVERAGED_ALBEDO_TEB',0,ZHOOK_HANDLE) 00154 GMASK(:) = .FALSE. 00155 CALL SNOW_FRAC_ROAD(TSNOW_ROAD%WSNOW(:,1,1),GMASK,ZDN_ROAD,ZDF_ROAD) 00156 CALL SNOW_FRAC_ROOF(TSNOW_ROOF%WSNOW(:,1,1),GMASK,ZDN_ROOF,ZDF_ROOF) 00157 ! 00158 ! 00159 !* town direct and diffuse albedo 00160 ! ------------------------------- 00161 ! 00162 ZDIR_SW=1. 00163 ZSCA_SW=1. 00164 GSHAD_DAY=.FALSE. 00165 IF (SIZE(OSHAD_DAY)>0) GSHAD_DAY=OSHAD_DAY 00166 ! 00167 CALL URBAN_SOLAR_ABS(HBEM, HROAD_DIR, HWALL_OPT, & 00168 ZDIR_SW, ZSCA_SW, PZENITH, PAZIM, & 00169 PBLD, PGARDEN, PROAD_DIR, PROAD, PFRAC_GR, & 00170 PWALL_O_HOR, PCAN_HW_RATIO, & 00171 PALB_ROOF, & 00172 PALB_ROAD, PSVF_ROAD, PALB_WALL, PSVF_WALL, & 00173 PALB_GARDEN, PSVF_GARDEN, & 00174 PALB_GREENROOF, & 00175 TSNOW_ROOF%ALB(:,1), TSNOW_ROAD%ALB(:,1), & 00176 ZDN_ROOF, ZDF_ROOF, ZDN_ROAD, ZDF_ROAD, & 00177 PGR, PABS_WIN, PSHGC, PSHGC_SH, PALB_WIN, & 00178 ZABS_SW_ROOF, ZABS_SW_ROAD, & 00179 ZABS_SW_WALL_A, ZABS_SW_WALL_B, & 00180 ZABS_SW_GARDEN, ZABS_SW_GREENROOF, & 00181 ZABS_SW_SNOW_ROOF, ZABS_SW_SNOW_ROAD, & 00182 ZREC_SW_ROAD, ZREC_SW_SNOW_ROAD, & 00183 ZREC_SW_WALL_A, ZREC_SW_WALL_B, & 00184 ZREC_SW_GARDEN, & 00185 PDIR_ALB_TOWN, PSCA_ALB_TOWN, & 00186 ZSW_RAD_GARDEN, ZABS_SW_WIN, ZREC_SW_WIN, & 00187 PTRAN_WIN, & 00188 ZREF_SW_GRND, ZREF_SW_FAC, ZTR_SW_WIN, & 00189 ZE_SHADING, GSHAD_DAY, GMASK ) 00190 IF (LHOOK) CALL DR_HOOK('AVERAGED_ALBEDO_TEB',1,ZHOOK_HANDLE) 00191 ! 00192 !------------------------------------------------------------------------------- 00193 ! 00194 END SUBROUTINE AVERAGED_ALBEDO_TEB