! TEB version 4.0.1 (https://github.com/teb-model/teb). ! Copyright 2018 D. Meyer. Licensed under CeCILL version 2.1. MODULE MODD_WRF_TEB_DRIVER IMPLICIT NONE PRIVATE PUBLIC :: TEB_DRIVER CONTAINS SUBROUTINE TEB_DRIVER( & ! inputs num_roof_layers, num_wall_layers, num_road_layers, & num_snow_layers, num_floor_layers, & ZLON, ZLAT, & IYEAR, IMONTH, IDAY, ZTIME_START, XTSTEP_SURF, & XPS, XPA, & XTA, ZQA_KGKG, XRHOA, XCO2, & XLW, & XRAIN, XSNOW, & ZZREF, & ZDIR_SW, ZSCA_SW, ZWIND, ZDIR, & ! inputs / outputs ZT_CANYON, ZQ_CANYON, & ZTI_BLD, & ZT_ROOF, ZT_ROAD, ZT_WALL_A, ZT_WALL_B, & ZWS_ROOF, ZWS_ROAD, & ZWSNOW_ROOF, ZTSNOW_ROOF, ZRSNOW_ROOF, ZASNOW_ROOF, & ZTSSNOW_ROOF, ZESNOW_ROOF, & ZWSNOW_ROAD, ZTSNOW_ROAD, ZRSNOW_ROAD, ZASNOW_ROAD, & ZTSSNOW_ROAD, ZESNOW_ROAD, & ZAUX_MAX, ZT_FLOOR, & ZT_MASS, & ZT_WIN1, ZT_WIN2, ZQI_BLD, & ZTHER_PRODC_DAY, & ! parameters LGARDEN, LGREENROOF, LSOLAR_PANEL, & HZ0H, HROAD_DIR, HWALL_OPT, & HSNOW_ROAD, & HSNOW_ROOF, & ZH_TRAFFIC, ZLE_TRAFFIC, ZH_INDUSTRY, ZLE_INDUSTRY, & ZZ0, & ZBLD, ZGARDEN, ZROAD_DIR, ZFRAC_GR, & ZBLD_HEIGHT, ZWALL_O_HOR, & ZALB_ROOF, ZEMIS_ROOF, & ZHC_ROOF, ZTC_ROOF, ZD_ROOF, & ZALB_ROAD, ZEMIS_ROAD, & ZHC_ROAD, ZTC_ROAD,ZD_ROAD, & ZALB_WALL, ZEMIS_WALL, & ZHC_WALL, ZTC_WALL, ZD_WALL, & CCOOL_COIL, ZF_WATER_COND, CHEAT_COIL, & ZNATVENT, & XF_WASTE_CAN, ZQIN, ZQIN_FRAD, & ZQIN_FLAT, ZGR, ZEFF_HEAT, ZINF, & ZTCOOL_TARGET, ZTHEAT_TARGET, ZHR_TARGET, & ZV_VENT, ZCAP_SYS_HEAT, XCAP_SYS_RAT, ZT_ADP, & XM_SYS_RAT, ZCOP_RAT, ZHC_FLOOR, ZTC_FLOOR, & ZD_FLOOR, ZSHGC, & ZSHGC_SH, & ZSHADE, & CBEM, & CCH_BEM, ZROUGH_ROOF, ZROUGH_WALL, & LPAR_RD_IRRIG, ZRD_START_MONTH, ZRD_END_MONTH, & ZRD_START_HOUR, ZRD_END_HOUR, ZRD_24H_IRRIG, & ZEMIS_PANEL, ZALB_PANEL, ZEFF_PANEL, ZFRAC_PANEL, & ZRESIDENTIAL, & ZDT_RES, ZDT_OFF, & ZFLOOR_HEIGHT, PU_WIN, & ! outputs ZHVAC_COOL_TOT, ZHVAC_HEAT_TOT, & ZTHER_PROD_PANEL, ZPHOT_PROD_PANEL, & XU_CANYON, & ZRN_TOWN, ZH_TOWN, ZLE_TOWN, ZGFLUX_TOWN, ZEVAP_TOWN, & ZUSTAR_TOWN, & ZTS_TOWN, ZEMIS_TOWN, & ZALB_TOWN, ZDIR_CANYON, ZQ_TOWN & ) ! TEB imports USE MODD_CSTS, ONLY : XCPD, XPI, & XRD, XP00 USE MODD_SURF_ATM, ONLY: XCISMIN, XVMODMIN, LALDTHRES, XRIMAX USE MODD_SURF_PAR, ONLY: XUNDEF USE MODD_TYPE_DATE_SURF USE MODE_THERMOS USE MODD_REPROD_OPER, ONLY : CQSAT ! USE MODI_SUNPOS USE MODI_OL_READ_ATM USE MODI_OL_ALLOC_ATM USE MODI_OL_TIME_INTERP_ATM USE MODI_TEB_GARDEN_STRUCT USE MODI_WINDOW_DATA_STRUCT USE MODI_BEM_MORPHO_STRUCT USE MODI_CIRCUMSOLAR_RAD IMPLICIT NONE INTEGER, INTENT(IN) :: num_roof_layers, & num_wall_layers, & num_road_layers, & num_snow_layers, & num_floor_layers ! Coordinates REAL, DIMENSION(1), INTENT(IN) :: ZLON ! Longitude (deg) REAL, DIMENSION(1), INTENT(IN) :: ZLAT ! Latitude (deg) REAL, INTENT(IN) :: XTSTEP_SURF ! length of timestep in seconds INTEGER, INTENT(IN) :: IYEAR, IMONTH, IDAY ! date at current time step REAL, INTENT(IN) :: ZTIME_START ! time at beginning of time step, since midnight (UTC, s) ! End coordinates ! Parameters LOGICAL, INTENT(IN) :: LSOLAR_PANEL ! Flag to use a solar panels on roofs LOGICAL, INTENT(IN) :: LGARDEN ! Flag to use a vegetation scheme in gardens LOGICAL, INTENT(IN) :: LGREENROOF ! Flag to use a green roofs scheme CHARACTER(LEN=4), INTENT(IN) :: HROAD_DIR ! road direction option : ! 'UNIF' : uniform roads ! 'ORIE' : specified road orientation CHARACTER(LEN=4), INTENT(IN) :: HWALL_OPT ! Wall option ! 'UNIF' : uniform walls ! 'TWO ' : 2 opposite walls REAL, DIMENSION(1), INTENT(IN) :: ZGARDEN ! fraction of GARDEN areas REAL, DIMENSION(1), INTENT(IN) :: ZROAD_DIR ! road direction (° from North, clockwise) REAL, DIMENSION(1), INTENT(IN) :: ZFRAC_GR ! fraction of greenroofs on roofs CHARACTER(LEN=12), INTENT(IN) :: CCOOL_COIL ! option for cooling device type CHARACTER(LEN=6), INTENT(IN) :: CHEAT_COIL ! option for heating device type REAL, DIMENSION(1), INTENT(IN) :: ZF_WATER_COND ! fraction of evaporation for the condensers REAL, DIMENSION(1), INTENT(IN) :: ZNATVENT ! flag to describe surventilation system for ! i/o 0 for NONE, 1 for MANU and 2 for AUTO REAL, DIMENSION(1), INTENT(IN) :: XF_WASTE_CAN ! fraction of waste heat released into the canyon REAL, DIMENSION(1), INTENT(IN) :: ZQIN ! Internal heat gains [W m-2(floor)] REAL, DIMENSION(1), INTENT(IN) :: ZQIN_FRAD ! Radiant fraction of internal heat gains REAL, DIMENSION(1), INTENT(IN) :: ZQIN_FLAT ! Latent franction of internal heat gains REAL, DIMENSION(1), INTENT(IN) :: ZGR ! Glazing ratio REAL, DIMENSION(1), INTENT(IN) :: ZEFF_HEAT ! Efficiency of the heating system REAL, DIMENSION(1), INTENT(IN) :: ZINF ! Infiltration flow rate [AC/H] REAL, DIMENSION(1), INTENT(IN) :: ZTCOOL_TARGET ! Cooling setpoint of HVAC system [K] REAL, DIMENSION(1), INTENT(IN) :: ZTHEAT_TARGET ! Heating setpoint of HVAC system [K] REAL, DIMENSION(1), INTENT(IN) :: ZHR_TARGET ! Relative humidity setpoint REAL, DIMENSION(1), INTENT(IN) :: ZV_VENT ! Ventilation flow rate [AC/H] REAL, DIMENSION(1), INTENT(IN) :: ZCAP_SYS_HEAT ! Capacity of the heating system [W m-2(bld)] REAL, DIMENSION(1), INTENT(IN) :: XCAP_SYS_RAT ! Rated capacity of the cooling system [W m-2(bld)] REAL, DIMENSION(1), INTENT(IN) :: ZT_ADP ! Apparatus dewpoint temperature of the cooling coil [K] REAL, DIMENSION(1), INTENT(IN) :: XM_SYS_RAT ! Rated HVAC mass flow rate [kg s-1 m-2(bld)] REAL, DIMENSION(1), INTENT(IN) :: ZCOP_RAT ! Rated COP of the cooling system REAL, DIMENSION(1, num_floor_layers), INTENT(IN) :: ZHC_FLOOR ! heat capacity for floor layers REAL, DIMENSION(1, num_floor_layers), INTENT(IN) :: ZTC_FLOOR ! thermal conductivity for floor layers REAL, DIMENSION(1, num_floor_layers), INTENT(IN) :: ZD_FLOOR ! depth of floor layers REAL, DIMENSION(1), INTENT(IN) :: ZSHGC ! window solar transmittance REAL, DIMENSION(1), INTENT(IN) :: ZSHGC_SH ! window + shading solar heat gain coef. REAL, DIMENSION(1), INTENT(IN) :: PU_WIN ! window U-factor [K m W-2] REAL, DIMENSION(1), INTENT(IN) :: ZSHADE ! flag to activate shading devices -> REAL for i/o 0. or 1 REAL, DIMENSION(1), INTENT(IN) :: ZFLOOR_HEIGHT ! Floor height (m) CHARACTER(LEN=5), INTENT(IN) :: CCH_BEM ! TEB option for building outside conv. coef CHARACTER(LEN=3), INTENT(IN) :: CBEM ! Building Energy model 'DEF' or 'BEM' REAL, DIMENSION(1), INTENT(IN) :: ZROUGH_ROOF ! roof roughness coef. REAL, DIMENSION(1), INTENT(IN) :: ZROUGH_WALL ! wall roughness coef. LOGICAL, INTENT(IN) :: LPAR_RD_IRRIG ! Flag for road watering REAL, DIMENSION(1), INTENT(IN) :: ZRD_START_MONTH ! start month for watering of roads(included) REAL, DIMENSION(1), INTENT(IN) :: ZRD_END_MONTH ! end month for watering of roads(included) REAL, DIMENSION(1), INTENT(IN) :: ZRD_START_HOUR ! start hour for watering of roads(included) REAL, DIMENSION(1), INTENT(IN) :: ZRD_END_HOUR ! end hour for watering of roads(excluded) REAL, DIMENSION(1), INTENT(IN) :: ZRD_24H_IRRIG ! 24h quantity of water used for road watering (liter/m2) REAL, DIMENSION(1), INTENT(IN) :: ZEMIS_PANEL ! Emissivity of solar panel [-] REAL, DIMENSION(1), INTENT(IN) :: ZALB_PANEL ! albedo of solar panel [-] REAL, DIMENSION(1), INTENT(IN) :: ZEFF_PANEL ! Efficiency of solar panel [-] REAL, DIMENSION(1), INTENT(IN) :: ZFRAC_PANEL ! fraction of solar panels on roofs REAL, DIMENSION(1), INTENT(IN) :: ZRESIDENTIAL ! Fraction of residential use in buildings REAL, INTENT(IN) :: ZDT_RES ! target temperature change when unoccupied ! (K) (residential buildings) REAL, INTENT(IN) :: ZDT_OFF ! target temperature change when unoccupied ! (K) (office buildings) ! End parameters ! Variable inputs REAL, DIMENSION(1), INTENT(IN) :: XCO2 ! CO2 concentration in the air (kg/m3) CHARACTER(LEN=6), INTENT(IN) :: HZ0H ! TEB option for z0h roof & road ! 'MASC95' : Mascart et al 1995 ! 'BRUT82' : Brustaert 1982 ! 'KAND07' : Kanda 2007 REAL, DIMENSION(1), INTENT(IN) :: ZWIND ! module of the horizontal wind CHARACTER(LEN=4), INTENT(IN) :: HSNOW_ROOF ! snow roof scheme ! 'NONE' ! 'D95 ' ! '1-L ' CHARACTER(LEN=4), INTENT(IN) :: HSNOW_ROAD ! snow road scheme ! 'NONE' ! 'D95 ' ! '1-L ' REAL, DIMENSION(1), INTENT(IN) :: XTA ! air temperature forcing (K) REAL, DIMENSION(1), INTENT(IN) :: XPS ! pressure at the surface REAL, DIMENSION(1), INTENT(IN) :: XPA ! pressure at the first atmospheric level REAL, DIMENSION(1), INTENT(IN) :: XRHOA ! air density at the lowest level REAL, DIMENSION(1), INTENT(IN) :: ZDIR ! wind direction REAL, DIMENSION(1), INTENT(IN) :: XLW ! atmospheric infrared radiation REAL, DIMENSION(1,1), INTENT(IN) :: ZDIR_SW ! incoming direct solar radiation on an horizontal surface REAL, DIMENSION(1,1), INTENT(IN) :: ZSCA_SW ! scattered incoming solar rad. REAL, DIMENSION(1), INTENT(IN) :: XRAIN ! rain rate (kg/m2/s) REAL, DIMENSION(1), INTENT(IN) :: XSNOW ! snow rate (kg/s/m2 of snow) REAL, DIMENSION(1), INTENT(IN) :: ZH_TRAFFIC ! anthropogenic sensible heat fluxes due to traffic REAL, DIMENSION(1), INTENT(IN) :: ZLE_TRAFFIC ! anthropogenic latent heat fluxes due to traffic REAL, DIMENSION(1), INTENT(IN) :: ZH_INDUSTRY ! anthropogenic sensible heat fluxes due to factories REAL, DIMENSION(1), INTENT(IN) :: ZLE_INDUSTRY ! anthropogenic latent heat fluxes due to factories REAL, DIMENSION(1), INTENT(IN) :: ZZREF ! reference height of the first atmospheric level (temperature) REAL, DIMENSION(1), INTENT(IN) :: ZZ0 ! town roughness length for momentum REAL, DIMENSION(1), INTENT(IN) :: ZBLD ! fraction of buildings REAL, DIMENSION(1), INTENT(IN) :: ZBLD_HEIGHT ! buildings h REAL, DIMENSION(1), INTENT(IN) :: ZWALL_O_HOR ! wall surf. / hor. surf. REAL, DIMENSION(1), INTENT(IN) :: ZALB_ROOF ! roof albedo REAL, DIMENSION(1), INTENT(IN) :: ZEMIS_ROOF ! roof emissivity REAL, DIMENSION(1, num_roof_layers), INTENT(IN) :: ZHC_ROOF ! heat capacity for roof layers (J/m3/K) REAL, DIMENSION(1, num_roof_layers), INTENT(IN) :: ZTC_ROOF ! thermal conductivity for roof layers (w/m/K) REAL, DIMENSION(1, num_roof_layers), INTENT(IN) :: ZD_ROOF ! depth of roof layers REAL, DIMENSION(1), INTENT(IN) :: ZALB_ROAD ! road albedo REAL, DIMENSION(1), INTENT(IN) :: ZEMIS_ROAD ! road emissivity REAL, DIMENSION(1, num_road_layers), INTENT(IN) :: ZHC_ROAD ! heat capacity for road layers (J/m3/K) REAL, DIMENSION(1, num_road_layers), INTENT(IN) :: ZTC_ROAD ! thermal conductivity for road layers (w/m/K) REAL, DIMENSION(1, num_road_layers), INTENT(IN) :: ZD_ROAD ! depth of road layers REAL, DIMENSION(1), INTENT(IN) :: ZALB_WALL ! wall albedo REAL, DIMENSION(1), INTENT(IN) :: ZEMIS_WALL ! wall emissivity REAL, DIMENSION(1, num_wall_layers), INTENT(IN) :: ZHC_WALL ! heat capacity for wall layers (J/m3/K) REAL, DIMENSION(1, num_wall_layers), INTENT(IN) :: ZTC_WALL ! thermal conductivity for wall layers REAL, DIMENSION(1, num_wall_layers), INTENT(IN) :: ZD_WALL ! depth of wall layers REAL, DIMENSION(1), INTENT(IN) :: ZQA_KGKG ! air humidity at forcing level (kg/kg) ! End variable inputs ! State REAL, DIMENSION(1), INTENT(INOUT) :: ZT_WIN1 ! outdoor window temperature [K] REAL, DIMENSION(1), INTENT(INOUT) :: ZT_WIN2 ! Indoor window temperature [K] REAL, DIMENSION(1), INTENT(INOUT) :: ZAUX_MAX ! Auxiliar variable for autosize calcs (not used) REAL, DIMENSION(1), INTENT(INOUT) :: ZTHER_PRODC_DAY ! Present day integrated thermal production of energy (J/m2 panel) REAL, DIMENSION(1), INTENT(INOUT) :: ZQI_BLD ! Indoor air specific humidity [kg kg-1] REAL, DIMENSION(1, num_floor_layers), INTENT(INOUT) :: ZT_FLOOR ! Floor layers temperatures [K] REAL, DIMENSION(1, num_floor_layers), INTENT(INOUT) :: ZT_MASS ! Internal mass layers temperatures [K] REAL, DIMENSION(1, num_road_layers), INTENT(INOUT) :: ZT_ROAD ! road layers temperatures REAL, DIMENSION(1, num_roof_layers), INTENT(INOUT) :: ZT_ROOF ! roof layers temperatures REAL, DIMENSION(1, num_wall_layers), INTENT(INOUT) :: ZT_WALL_A ! wall layers temperatures (wall 'A') REAL, DIMENSION(1, num_wall_layers), INTENT(INOUT) :: ZT_WALL_B ! wall layers temperatures (wall 'B') REAL, DIMENSION(1), INTENT(INOUT) :: ZT_CANYON ! canyon air temperature REAL, DIMENSION(1), INTENT(INOUT) :: ZQ_CANYON ! canyon air specific humidity REAL, DIMENSION(1), INTENT(INOUT) :: ZTI_BLD ! inside building temperature REAL, DIMENSION(1), INTENT(INOUT) :: ZWS_ROOF ! roof water reservoir(kg/m2) REAL, DIMENSION(1), INTENT(INOUT) :: ZWS_ROAD ! road water reservoir(kg/m2) REAL, DIMENSION(1, num_snow_layers), INTENT(INOUT) :: ZWSNOW_ROOF ! snow layers reservoir REAL, DIMENSION(1, num_snow_layers), INTENT(INOUT) :: ZTSNOW_ROOF ! snow layers temperature REAL, DIMENSION(1, num_snow_layers), INTENT(INOUT) :: ZRSNOW_ROOF ! snow layers density REAL, DIMENSION(1), INTENT(INOUT) :: ZASNOW_ROOF ! snow albedo REAL, DIMENSION(1), INTENT(INOUT) :: ZESNOW_ROOF ! snow emissivity REAL, DIMENSION(1), INTENT(INOUT) :: ZTSSNOW_ROOF ! snow surface temperature REAL, DIMENSION(1, num_snow_layers), INTENT(INOUT) :: ZWSNOW_ROAD ! snow layers reservoir REAL, DIMENSION(1, num_snow_layers), INTENT(INOUT) :: ZTSNOW_ROAD ! snow layers temperature REAL, DIMENSION(1, num_snow_layers), INTENT(INOUT) :: ZRSNOW_ROAD ! snow layers density REAL, DIMENSION(1), INTENT(INOUT) :: ZASNOW_ROAD ! snow albedo REAL, DIMENSION(1), INTENT(INOUT) :: ZESNOW_ROAD ! snow emissivity REAL, DIMENSION(1), INTENT(INOUT) :: ZTSSNOW_ROAD ! snow surface temperature ! End state ! Diagnostics REAL, DIMENSION(1), INTENT(OUT) :: ZHVAC_COOL_TOT ! Energy consumption of the cooling system [W m-2(tot)] REAL, DIMENSION(1), INTENT(OUT) :: ZHVAC_HEAT_TOT ! Energy consumption of the heating system [W m-2(tot)] REAL, DIMENSION(1), INTENT(OUT) :: ZTHER_PROD_PANEL ! Thermal energy production of solar panel on roofs (W/m2 panel) REAL, DIMENSION(1), INTENT(OUT) :: ZPHOT_PROD_PANEL ! Photovoltaic Energy production of solar panel on roofs (W/m2 panel) REAL, DIMENSION(1), INTENT(OUT) :: ZRN_TOWN ! net radiation over town REAL, DIMENSION(1), INTENT(OUT) :: ZH_TOWN ! sensible heat flux over town REAL, DIMENSION(1), INTENT(OUT) :: ZLE_TOWN ! latent heat flux over town REAL, DIMENSION(1), INTENT(OUT) :: ZGFLUX_TOWN ! flux through the ground REAL, DIMENSION(1), INTENT(OUT) :: ZEVAP_TOWN ! evaporation flux (kg/m2/s) REAL, DIMENSION(1), INTENT(OUT) :: ZUSTAR_TOWN ! friction velocity over town REAL, DIMENSION(1), INTENT(OUT) :: ZTS_TOWN ! town surface temperature REAL, DIMENSION(1), INTENT(OUT) :: ZEMIS_TOWN ! town equivalent emissivity REAL, DIMENSION(1), INTENT(OUT) :: ZALB_TOWN ! town equivalent albedo REAL, DIMENSION(1), INTENT(OUT) :: XU_CANYON ! canyon hor. wind REAL, DIMENSION(1), INTENT(OUT) :: ZDIR_CANYON ! canyon wind direction REAL, DIMENSION(1), INTENT(OUT) :: ZQ_TOWN ! Town humidity ! End diagnostics ! Constants CHARACTER(LEN=3) :: HIMPLICIT_WIND = 'NEW' ! Implicitation option for wind fluxes INTEGER :: KSW = 1 ! number of spectral bands in SW forcing LOGICAL :: LCANOPY = .FALSE. ! is canopy active ? REAL, DIMENSION(1) :: XSW_BANDS = XUNDEF ! mean wavelength of each shortwave band (m) ! (unused in TEB, but needed as argument) ! End constants ! Local variables REAL :: ZTIME_BEG ! Time at beginning of time step REAL :: ZTIME ! Time at end of time step INTEGER :: IYEAR2 ! current year at end of timestep(UTC) INTEGER :: IMONTH2 ! current month at end of timestep(UTC) INTEGER :: IDAY2 ! current day at end of timestep(UTC) REAL :: ZTIME2 ! current time since start of the day at end of timestep (s) TYPE(DATE_TIME) :: TPTIME REAL, DIMENSION(1) :: ZSW REAL :: ZBEGIN_TRAFFIC_TIME ! start traffic time (solar time, s) REAL :: ZEND_TRAFFIC_TIME ! end traffic time (solar time, s) REAL, DIMENSION(1) :: XH_TRAFFIC ! heat fluxes due to traffic ! \\/ REAL, DIMENSION(1) :: XLE_TRAFFIC ! heat fluxes due to traffic REAL, DIMENSION(1) :: ZU_CANYON ! canyon hor. wind REAL, DIMENSION(1) :: ZU_LOWCAN ! wind near the road REAL, DIMENSION(1) :: ZT_LOWCAN ! temp. near the road REAL, DIMENSION(1) :: ZQ_LOWCAN ! hum. near the road REAL, DIMENSION(1) :: ZZ_LOWCAN ! height of atm. var. near the road REAL, DIMENSION(1) :: ZVMOD ! module of the horizontal wind REAL, DIMENSION(1) :: ZEXNA ! exner function at the lowest level REAL, DIMENSION(1) :: ZEXNS ! surface exner function REAL, DIMENSION(1) :: ZF1_o_B ! Coefficient for sky model REAL, DIMENSION(1) :: ZCOEF ! work array REAL, DIMENSION(1) :: XZENITH ! solar zenithal angle (radian) REAL, DIMENSION(1) :: XZENITH2 ! solar zenithal angle (radian) REAL, DIMENSION(1) :: XTSUN ! solar time (s from midnight) REAL, DIMENSION(1) :: XAZIM ! azimuthal angle (radian from North, clockwise) REAL, DIMENSION(1) :: ZPEW_A_COEF_LOWCAN REAL, DIMENSION(1) :: ZPEW_B_COEF_LOWCAN REAL, DIMENSION(1) :: ZPEW_A_COEF ! implicit coefficients REAL, DIMENSION(1) :: ZPEW_B_COEF ! for wind coupling ! V = ZPEW_A_COEF * v'w' + ZPEW_B_COEF ! IF explicit: ZPEW_A_COEF = 0 and ZPEW_B_COEF REAL, DIMENSION(1) :: ZWAKE ! reduction of average wind speed REAL, DIMENSION(1) :: ZSVF_WALL ! wall sky view factor REAL, DIMENSION(1) :: ZCAN_HW_RATIO ! canyon h/W REAL, DIMENSION(1) :: ZSVF_ROAD ! road sky view factor REAL, DIMENSION(1) :: ZROAD ! fraction of roads REAL, DIMENSION(1) :: ZROAD_O_GRND ! Road to ground surface ratio REAL, DIMENSION(1) :: ZGARDEN_O_GRND ! Garden to ground surface ratio REAL, DIMENSION(1) :: ZWALL_O_GRND ! Wall to ground surface ratio REAL, DIMENSION(1) :: ZSVF_GARDEN ! garden sky view factor REAL, DIMENSION(1) :: ZTOTS_O_HORS ! total canyon+roof surf over horizontal surf REAL, DIMENSION(1) :: ZROOF_FRAC ! roof area fraction REAL, DIMENSION(1) :: ZWALL_FRAC ! wall area fraction REAL, DIMENSION(1) :: ZROAD_FRAC ! road area fraction REAL, DIMENSION(1) :: ZGARDEN_FRAC ! garden area fraction REAL, DIMENSION(1) :: ZUGG_WIN ! window glass-to-glass U-factro [W m-2 K-1] REAL, DIMENSION(1) :: ZALB_WIN ! window albedo REAL, DIMENSION(1) :: ZABS_WIN ! window absortance REAL, DIMENSION(1) :: ZTRAN_WIN ! window transmittance REAL, DIMENSION(1) :: ZN_FLOOR ! Number of floors REAL, DIMENSION(1) :: ZWALL_O_BLD ! Wall area [m2_wall/m2_bld] REAL, DIMENSION(1) :: ZGLAZ_O_BLD ! Window area [m2_win/m2_bld] REAL, DIMENSION(1) :: ZMASS_O_BLD ! Mass area [m2_mass/m2_bld] REAL, DIMENSION(1) :: ZFLOOR_HW_RATIO ! H/W ratio of 1 floor level REAL, DIMENSION(1) :: ZF_FLOOR_MASS ! View factor floor-mass REAL, DIMENSION(1) :: ZF_FLOOR_WALL ! View factor floor-wall REAL, DIMENSION(1) :: ZF_FLOOR_WIN ! View factor floor-window REAL, DIMENSION(1) :: ZF_FLOOR_ROOF ! View factor floor-roof REAL, DIMENSION(1) :: ZF_WALL_FLOOR ! View factor wall-floor REAL, DIMENSION(1) :: ZF_WALL_MASS ! View factor wall-mass REAL, DIMENSION(1) :: ZF_WALL_WIN ! View factor wall-win REAL, DIMENSION(1) :: ZF_WIN_FLOOR ! View factor win-floor REAL, DIMENSION(1) :: ZF_WIN_MASS ! View factor win-mass REAL, DIMENSION(1) :: ZF_WIN_WALL ! View factor win-wall REAL, DIMENSION(1) :: ZF_MASS_FLOOR ! View factor mass-floor REAL, DIMENSION(1) :: ZF_MASS_WALL ! View factor mass-wall REAL, DIMENSION(1) :: ZF_MASS_WIN ! View factor mass-window REAL, DIMENSION(1) :: ZF_WIN_WIN ! indoor win to win view factor REAL, DIMENSION(1) :: ZDIR_ALB_TOWN ! town equivalent direct albedo REAL, DIMENSION(1) :: ZSCA_ALB_TOWN ! town equivalent diffuse albedo REAL, DIMENSION(1,1) :: ZTDIR_SW ! total direct SW REAL, DIMENSION(1,1) :: ZTSCA_SW ! total diffuse SW ! TODO: what about these? make into state variables? ! For now set to off state as they are not considered in the eval. LOGICAL, DIMENSION(1) :: GSHAD_DAY ! has shading been necessary this day ? LOGICAL, DIMENSION(1) :: GNATVENT_NIGHT ! has natural ventilation been necessary/possible this night ? REAL, DIMENSION(1,1) :: XDIR_SW ! incoming direct solar radiation on an horizontal surface REAL, DIMENSION(1,1) :: XSCA_SW ! scattered incoming solar rad. REAL, DIMENSION(1) :: PFLOOR_HEIGHT ! Floor height (m) REAL, DIMENSION(1) :: ZF_WASTE_CAN ! fraction of waste heat released into the canyon REAL, DIMENSION(1) :: ZCAP_SYS_RAT ! Rated capacity of the cooling system [W m-2(bld)] REAL, DIMENSION(1) :: ZM_SYS_RAT ! Rated HVAC mass flow rate [kg s-1 m-2(bld)] LOGICAL, DIMENSION(1) :: LSHADE ! Flag to use shading devices CHARACTER(LEN=4), DIMENSION(1) :: HNATVENT ! End local variables ! Unused model outputs REAL, DIMENSION(1) :: ZRN_STRLROOF ! net radiation over structural roof REAL, DIMENSION(1) :: ZH_STRLROOF ! sensible heat flux over structural roof REAL, DIMENSION(1) :: ZLE_STRLROOF ! latent heat flux over structural roof REAL, DIMENSION(1) :: ZGFLUX_STRLROOF ! flux through the structural roof REAL, DIMENSION(1) :: ZRUNOFF_STRLROOF ! water runoff on the structural roof REAL, DIMENSION(1) :: ZRN_BLT ! net radiation over built covers REAL, DIMENSION(1) :: ZH_BLT ! sensible heat flux over built covers REAL, DIMENSION(1) :: ZLE_BLT ! latent heat flux over built covers REAL, DIMENSION(1) :: ZGFLUX_BLT ! flux through the built covers REAL, DIMENSION(1) :: ZSFCO2 ! Surface Flux of CO2 REAL, DIMENSION(1) :: ZUW_GRND ! friction flux over ground REAL, DIMENSION(1) :: ZUW_ROOF ! Momentum flux for roofs REAL, DIMENSION(1) :: ZDUWDU_GRND ! d(u'w')/du for ground REAL, DIMENSION(1) :: ZDUWDU_ROOF ! d(u'w')/du for roof REAL, DIMENSION(1) :: ZAC_GARDEN ! garden aerodynamical conductance REAL, DIMENSION(1) :: ZAC_GREENROOF ! green roofs aerodynamical conductance REAL, DIMENSION(1) :: ZAC_ROAD_WAT ! road aerodynamical conductance (for water) REAL, DIMENSION(1) :: ZAC_GARDEN_WAT ! garden aerodynamical conductance for vapor REAL, DIMENSION(1) :: ZAC_GREENROOF_WAT ! green roofs aerodynamical conductance for vapor REAL, DIMENSION(1) :: ZABS_SW_ROOF ! Shortwave radiation absorbed by roofs REAL, DIMENSION(1) :: ZABS_LW_ROOF ! Longwave radiation absorbed by roofs REAL, DIMENSION(1) :: ZABS_SW_SNOW_ROOF ! Shortwave radiation absorbed by roof snow REAL, DIMENSION(1) :: ZABS_LW_SNOW_ROOF ! abs. LW rad. by snow REAL, DIMENSION(1) :: ZABS_SW_ROAD ! Shortwave radiation absorbed by roads REAL, DIMENSION(1) :: ZABS_LW_ROAD ! Longwave radiation absorbed by roads REAL, DIMENSION(1) :: ZABS_SW_SNOW_ROAD ! Shortwave radiation absorbed by road snow REAL, DIMENSION(1) :: ZABS_LW_SNOW_ROAD ! abs. LW rad. by snow REAL, DIMENSION(1) :: ZABS_SW_WALL_A ! Shortwave radiation absorbed by wall A REAL, DIMENSION(1) :: ZABS_LW_WALL_A ! Longwave radiation absorbed by wall A REAL, DIMENSION(1) :: ZABS_SW_WALL_B ! Shortwave radiation absorbed by wall B REAL, DIMENSION(1) :: ZABS_LW_WALL_B ! Longwave radiation absorbed by wall B REAL, DIMENSION(1) :: ZABS_SW_PANEL ! Shortwave radiation absorbed by solar panels REAL, DIMENSION(1) :: ZABS_LW_PANEL ! Longwave radiation absorbed by solar panels REAL, DIMENSION(1) :: ZABS_SW_GARDEN ! Shortwave radiation absorbed by gardens REAL, DIMENSION(1) :: ZABS_LW_GARDEN ! Longwave radiation absorbed by gardens REAL, DIMENSION(1) :: ZABS_SW_GREENROOF ! Shortwave radiation absorbed by greenroofs REAL, DIMENSION(1) :: ZABS_LW_GREENROOF ! Longwave radiation absorbed by greenroofs REAL, DIMENSION(1) :: ZG_GREENROOF_ROOF ! heat flux between base of greenroof and structural roof REAL, DIMENSION(1) :: ZH_BLD_COOL ! Sensible cooling energy demand of the building [W m-2(bld)] REAL, DIMENSION(1) :: ZT_BLD_COOL ! Total cooling energy demand of the building [W m-2(bld)] REAL, DIMENSION(1) :: ZH_BLD_HEAT ! Heating energy demand of the building [W m-2(bld)] REAL, DIMENSION(1) :: ZLE_BLD_COOL ! Latent cooling energy demand of the building [W m-2(bld)] REAL, DIMENSION(1) :: ZLE_BLD_HEAT ! Latent heating energy demand of the building [W m-2(bld)] REAL, DIMENSION(1) :: ZH_WASTE ! Sensible waste heat from HVAC system [W m-2(tot)] REAL, DIMENSION(1) :: ZLE_WASTE ! Latent waste heat from HVAC system [W m-2(tot)] REAL, DIMENSION(1) :: ZCAP_SYS ! Actual capacity of the cooling system [W m-2(bld)] REAL, DIMENSION(1) :: ZM_SYS ! Actual HVAC mass flow rate [kg s-1 m-2(bld)] REAL, DIMENSION(1) :: ZCOP ! COP of the cooling system REAL, DIMENSION(1) :: ZQ_SYS ! Supply air specific humidity [kg kg-1] REAL, DIMENSION(1) :: ZT_SYS ! Supply air temperature [K] REAL, DIMENSION(1) :: ZTR_SW_WIN ! Solar radiation transmitted throught windows [W m-2(bld)] REAL, DIMENSION(1) :: ZFAN_POWER ! HVAC fan power REAL, DIMENSION(1) :: ZABS_SW_WIN ! window absorbed shortwave radiation [W m-2] REAL, DIMENSION(1) :: ZABS_LW_WIN ! absorbed infrared rad. [W m-2] REAL, DIMENSION(1) :: ZEMIT_LW_FAC ! LW flux emitted by the facade (W/m² ground) REAL, DIMENSION(1) :: ZEMIT_LW_GRND ! LW flux emitted by the ground (W/m² ground) REAL, DIMENSION(1) :: ZT_RAD_IND ! Indoor mean radiant temperature [K] REAL, DIMENSION(1) :: ZREF_SW_GRND ! total solar rad reflected from ground REAL, DIMENSION(1) :: ZREF_SW_FAC ! total solar rad reflected from facade REAL, DIMENSION(1) :: ZHU_BLD ! Indoor relative humidity 0 < (-) < 1 REAL, DIMENSION(1) :: ZIRRIG_ROAD ! road irrigation during current time-step REAL, DIMENSION(1) :: ZPROD_PANEL ! Averaged energy production of solar panel on roofs (W/m2 panel) REAL, DIMENSION(1) :: ZTHER_PROD_BLD ! Thermal energy production of solar panel on roofs (W/m2 bld) REAL, DIMENSION(1) :: ZPHOT_PROD_BLD ! Photovoltaic energy production of solar panel on roofs (W/m2 bld) REAL, DIMENSION(1) :: ZPROD_BLD ! Averaged energy production of solar panel on roofs (W/m2 bld) REAL, DIMENSION(1) :: ZH_PANEL ! Sensible heat flux from solar panels (W/m2 panel) REAL, DIMENSION(1) :: ZRN_PANEL ! Net radiation of solar panel (W/m2 panel) REAL, DIMENSION(1) :: ZCUR_QIN ! Internal heat gains [W m-2(floor)] REAL, DIMENSION(1) :: ZCUR_TCOOL_TARGET ! Cooling setpoint of HVAC system [K] REAL, DIMENSION(1) :: ZCUR_THEAT_TARGET ! Heating setpoint of HVAC system [K] REAL, DIMENSION(1) :: ZRN_ROOF ! net radiation over roof REAL, DIMENSION(1) :: ZH_ROOF ! sensible heat flux over roof REAL, DIMENSION(1) :: ZLE_ROOF ! latent heat flux over roof REAL, DIMENSION(1) :: ZLEW_ROOF ! latent heat flux over roof (snow) REAL, DIMENSION(1) :: ZGFLUX_ROOF ! flux through the roof REAL, DIMENSION(1) :: ZRUNOFF_ROOF ! runoff over the ground REAL, DIMENSION(1) :: ZRN_ROAD ! net radiation over road REAL, DIMENSION(1) :: ZH_ROAD ! sensible heat flux over road REAL, DIMENSION(1) :: ZLE_ROAD ! latent heat flux over road REAL, DIMENSION(1) :: ZLEW_ROAD ! latent heat flux over road (snow) (sublimation) REAL, DIMENSION(1) :: ZGFLUX_ROAD ! flux through the road REAL, DIMENSION(1) :: ZRUNOFF_ROAD ! runoff over the ground REAL, DIMENSION(1) :: ZRN_WALL_A ! net radiation over wall REAL, DIMENSION(1) :: ZH_WALL_A ! sensible heat flux over wall REAL, DIMENSION(1) :: ZLE_WALL_A ! latent heat flux over wall REAL, DIMENSION(1) :: ZGFLUX_WALL_A ! flux through the wall REAL, DIMENSION(1) :: ZRN_WALL_B ! net radiation over wall REAL, DIMENSION(1) :: ZH_WALL_B ! sensible heat flux over wall REAL, DIMENSION(1) :: ZLE_WALL_B ! latent heat flux over wall REAL, DIMENSION(1) :: ZGFLUX_WALL_B ! flux through the wall REAL, DIMENSION(1) :: ZRNSNOW_ROOF ! net radiation over snow REAL, DIMENSION(1) :: ZHSNOW_ROOF ! sensible heat flux over snow REAL, DIMENSION(1) :: ZLESNOW_ROOF ! latent heat flux over snow REAL, DIMENSION(1) :: ZGSNOW_ROOF ! flux under the snow REAL, DIMENSION(1) :: ZMELT_ROOF ! snow melt REAL, DIMENSION(1) :: ZRNSNOW_ROAD ! net radiation over snow REAL, DIMENSION(1) :: ZHSNOW_ROAD ! sensible heat flux over snow REAL, DIMENSION(1) :: ZLESNOW_ROAD ! latent heat flux over snow REAL, DIMENSION(1) :: ZGSNOW_ROAD ! flux under the snow REAL, DIMENSION(1) :: ZMELT_ROAD ! snow melt REAL, DIMENSION(1) :: ZRN_GRND ! net radiation over ground REAL, DIMENSION(1) :: ZH_GRND ! sensible heat flux over ground REAL, DIMENSION(1) :: ZLE_GRND ! latent heat flux over ground REAL, DIMENSION(1) :: ZGFLUX_GRND ! flux through the ground REAL, DIMENSION(1) :: ZRUNOFF_TOWN ! runoff over the ground REAL, DIMENSION(1) :: ZCD ! town averaged drag coefficient REAL, DIMENSION(1) :: ZCDN ! town averaged neutral drag coefficient REAL, DIMENSION(1) :: ZCH_TOWN ! town averaged heat transfer coefficient REAL, DIMENSION(1) :: ZRI_TOWN ! town averaged Richardson number REAL, DIMENSION(1) :: ZRESA_TOWN ! town aerodynamical resistance REAL, DIMENSION(1) :: ZDQS_TOWN ! heat storage inside town REAL, DIMENSION(1) :: ZQF_TOWN ! total anthropogenic heat REAL, DIMENSION(1) :: ZQF_BLD ! anthropogenic heat flux of domestic heating REAL, DIMENSION(1) :: ZFLX_BLD ! heat flux between inside of the bld and its structure REAL, DIMENSION(1) :: ZAC_ROAD ! road conductance REAL, DIMENSION(1) :: ZHVAC_COOL ! Energy consumption of the cooling system [W m-2(bld)] REAL, DIMENSION(1) :: ZHVAC_HEAT ! Energy consumption of the heating system [W m-2(bld)] ! End unused model outputs INTEGER :: JLOOP ! loop counter ! The following are IN arguments to this subroutine but are further modified, ! hence need to be copied to a local variable first. ZTIME = ZTIME_START XDIR_SW = ZDIR_SW XSCA_SW = ZSCA_SW PFLOOR_HEIGHT = ZFLOOR_HEIGHT ZF_WASTE_CAN = XF_WASTE_CAN ZCAP_SYS_RAT = XCAP_SYS_RAT ZM_SYS_RAT = XM_SYS_RAT ! ========================================================================= ! ! We try to keep the following module as close as possible to the TEB driver program ! to allow to easily update between future versions of TEB. ! Any changes to the following code should be requested and made directly into the ! TEB driver first and moved here. ! ----------------------------------------------------------- ! Initializations (SYSTEM) ! ----------------------------------------------------------- ! GSHAD_DAY = .FALSE. ! has shading been necessary this day ? GNATVENT_NIGHT =.FALSE. ! has natural ventilation been necessary/possible this night ? IF (ZNATVENT(1) >= 0.0 .AND. ZNATVENT(1) < 0.5) THEN HNATVENT = 'NONE' ELSEIF (ZNATVENT(1) >= 0.5 .AND. ZNATVENT(1) < 1.5) THEN HNATVENT = 'MANU' ELSEIF (ZNATVENT(1) >= 1.5 .AND. ZNATVENT(1) <= 2.5) THEN HNATVENT = 'AUTO' ELSEIF (ZNATVENT(1) >= 2.5 .AND. ZNATVENT(1) <= 3.5) THEN HNATVENT = 'MECH' ELSE HNATVENT = 'NONE' ENDIF IF (ZSHADE(1) >= 0.0 .AND. ZSHADE(1) < 0.5) THEN LSHADE = .FALSE. ELSEIF (ZSHADE(1) >= 0.5 .AND. ZSHADE(1) <= 1.0) THEN LSHADE = .TRUE. ELSE LSHADE = .FALSE. ENDIF ! ! coherence check IF ( (.NOT. LGREENROOF) .AND. ZFRAC_GR(1)>0.) THEN print*, 'Greenroofs option is not activated but a non-zero greenroof fraction is given' STOP END IF IF ( (.NOT. LGARDEN) .AND. ZGARDEN(1)>0.) THEN print*, 'Garden option is not activated but a non-zero garden fraction is given' STOP END IF IF ( ZBLD(1)+ZGARDEN(1)>=1.) THEN print*, 'The sum of garden and building fraction is larger than one, so road fraction is', & 'negative. Please check their values.' STOP END IF IF ( (.NOT. LSOLAR_PANEL) .AND. ZFRAC_PANEL(1)>0.) THEN print*, 'Solar panels option is not activated but a non-zero solar panels fraction is given' STOP END IF IF ( (.NOT. CBEM=='BEM') .AND. ZGR(1)>0.) THEN print*, 'Building Energy Module (BEM) is not activated but a non-zero glazing ratio is given' STOP END IF ! ! Multi layer option LCANOPY= .FALSE. ! DO NOT CHANGE: whether multi-layer canopy is active. ! CQSAT='NEW' ! saturation is computed relative to water above 0°C, and relative to ice below 0°C ! ! Thresholds XCISMIN = 0.5 ! Minimum wind shear XVMODMIN = 0.5 ! Minimum wind speed LALDTHRES = .FALSE. ! DO NOT CHANGE: whether to activate Aladin threshold for wind XRIMAX = 0.2 ! Maximum Richardson number for exchange coefficients computations ! ! ZTIME = ZTIME_START ! ! Geometric parameters ZROAD = (1. - ZBLD - ZGARDEN) ZCAN_HW_RATIO = 0.5 * ZWALL_O_HOR / (1.-ZBLD) ZSVF_ROAD = (SQRT(ZCAN_HW_RATIO**2+1.) - ZCAN_HW_RATIO) ZSVF_GARDEN = ZSVF_ROAD ZSVF_WALL = 0.5*(ZCAN_HW_RATIO+1.-SQRT(ZCAN_HW_RATIO**2+1.))/ZCAN_HW_RATIO ZZ_LOWCAN = ZBLD_HEIGHT / 2 ZTOTS_O_HORS = 1. + ZWALL_O_HOR ZROOF_FRAC = ZBLD / ZTOTS_O_HORS ZWALL_FRAC = ZWALL_O_HOR / ZTOTS_O_HORS ZROAD_FRAC = ZROAD / ZTOTS_O_HORS ZGARDEN_FRAC = ZGARDEN / ZTOTS_O_HORS ZWALL_O_GRND = ZWALL_FRAC / (ZROAD_FRAC+ZGARDEN_FRAC) ZROAD_O_GRND = ZROAD / (ZROAD + ZGARDEN) ZGARDEN_O_GRND = ZGARDEN / (ZROAD + ZGARDEN) ! CALL BEM_MORPHO_STRUCT(ZBLD, ZWALL_O_HOR, ZBLD_HEIGHT, PFLOOR_HEIGHT, & ZGR, ZN_FLOOR, ZWALL_O_BLD, ZGLAZ_O_BLD, ZMASS_O_BLD, & ZFLOOR_HW_RATIO, & ZF_FLOOR_MASS, ZF_FLOOR_WALL, ZF_FLOOR_WIN, & ZF_FLOOR_ROOF, ZF_WALL_FLOOR, ZF_WALL_MASS, & ZF_WALL_WIN, ZF_WIN_FLOOR, ZF_WIN_MASS, ZF_WIN_WALL, & ZF_MASS_FLOOR, ZF_MASS_WALL, ZF_MASS_WIN, ZF_WASTE_CAN, & ZF_WIN_WIN) ! ! Window characteristics CALL WINDOW_DATA_STRUCT(1, ZSHGC, PU_WIN, ZALB_WIN, ZABS_WIN, ZUGG_WIN, ZTRAN_WIN) ! ! CALL SUNPOS(IYEAR, IMONTH, IDAY, ZTIME, ZLON, ZLAT, XTSUN, XZENITH, XAZIM) IYEAR2 = IYEAR IMONTH2= IMONTH IDAY2 = IDAY ZTIME2 = ZTIME+XTSTEP_SURF CALL ADD_FORECAST_TO_DATE_SURF(IYEAR2, IMONTH2, IDAY2, ZTIME2) CALL SUNPOS(IYEAR2, IMONTH2, IDAY2, ZTIME2, ZLON, ZLAT, XTSUN, XZENITH2, XAZIM) ! TPTIME%TIME= ZTIME TPTIME%TDATE%YEAR =IYEAR TPTIME%TDATE%MONTH=IMONTH TPTIME%TDATE%DAY =IDAY ZSW(:) = 0. DO JLOOP=1,SIZE(XDIR_SW,2) ZSW(:) = ZSW(:) + XDIR_SW(:,JLOOP) + XSCA_SW(:,JLOOP) END DO WHERE (ZSW(:)>0.) XZENITH = MIN (XZENITH ,XPI/2.-0.01) XZENITH2 = MIN (XZENITH2,XPI/2.-0.01) ELSEWHERE XZENITH = MAX (XZENITH ,XPI/2.) XZENITH2 = MAX (XZENITH2,XPI/2.) END WHERE ! ! Exner functions ZEXNS = (XPS/XP00)**(XRD/XCPD) ZEXNA = (XPA/XP00)**(XRD/XCPD) ZTDIR_SW = XDIR_SW(1,1) ZTSCA_SW = XSCA_SW(1,1) KSW = 1 ! Only one spectral band here ! ! Sky model for diffuse radiation ! Add directionnal contrib from scattered radiation CALL CIRCUMSOLAR_RAD(XDIR_SW(:,1), XSCA_SW(:,1), XZENITH, ZF1_o_B) ZTDIR_SW(:,1) = XDIR_SW(:,1) + XSCA_SW(:,1) * ZF1_o_B ZTSCA_SW(:,1) = XSCA_SW(:,1) * (1. - ZF1_o_B) ZBEGIN_TRAFFIC_TIME = 21600. ZEND_TRAFFIC_TIME = 64800. ! WHERE( XTSUN>ZBEGIN_TRAFFIC_TIME .AND. XTSUN<ZEND_TRAFFIC_TIME ) XH_TRAFFIC (:) = ZH_TRAFFIC(:) XLE_TRAFFIC (:) = ZLE_TRAFFIC(:) ELSEWHERE XH_TRAFFIC (:) = 0. XLE_TRAFFIC (:) = 0. END WHERE ! ! Wind speed ZVMOD = ZWIND(1) ZWAKE = 1. + (2./XPI-1.) * 2. * (ZCAN_HW_RATIO-0.5) ZWAKE = MAX(MIN(ZWAKE,1.),2./XPI) ZU_CANYON = ZWAKE * EXP(-ZCAN_HW_RATIO/4.) * ZVMOD & * LOG( ( 2.* ZBLD_HEIGHT/3.) / ZZ0) & / LOG( (ZZREF + 2.* ZBLD_HEIGHT/3.) / ZZ0) ZU_LOWCAN = ZU_CANYON ZT_LOWCAN = ZT_CANYON ZQ_LOWCAN = ZQ_CANYON ! ZPEW_A_COEF = 0. ZPEW_A_COEF_LOWCAN = 0. ZPEW_B_COEF = ZVMOD ZPEW_B_COEF_LOWCAN = ZU_LOWCAN ! CALL TEB_GARDEN_STRUCT (LGARDEN, LGREENROOF, LSOLAR_PANEL, & HZ0H, HIMPLICIT_WIND, HROAD_DIR, HWALL_OPT, TPTIME, & XTSUN, ZT_CANYON, ZQ_CANYON, ZU_CANYON, & ZT_LOWCAN, ZQ_LOWCAN, ZU_LOWCAN, ZZ_LOWCAN, & ZTI_BLD, & ZT_ROOF, ZT_ROAD, ZT_WALL_A, ZT_WALL_B, & ZWS_ROOF,ZWS_ROAD, & HSNOW_ROOF, & ZWSNOW_ROOF, ZTSNOW_ROOF, ZRSNOW_ROOF, ZASNOW_ROOF, & ZTSSNOW_ROOF, ZESNOW_ROOF, & HSNOW_ROAD, & ZWSNOW_ROAD, ZTSNOW_ROAD, ZRSNOW_ROAD, ZASNOW_ROAD, & ZTSSNOW_ROAD, ZESNOW_ROAD, & ZPEW_A_COEF, ZPEW_B_COEF, & ZPEW_A_COEF_LOWCAN, ZPEW_B_COEF_LOWCAN, & XPS, XPA, ZEXNS, ZEXNA, & XTA, ZQA_KGKG, XRHOA, XCO2, & XLW, ZTDIR_SW, ZTSCA_SW, XSW_BANDS, KSW, & XZENITH, XAZIM, & XRAIN, XSNOW, & ZZREF, ZZREF, ZVMOD, & XH_TRAFFIC, XLE_TRAFFIC, ZH_INDUSTRY, ZLE_INDUSTRY, & XTSTEP_SURF, & ZZ0, & ZBLD,ZGARDEN,ZROAD_DIR,ZROAD,ZFRAC_GR, & ZBLD_HEIGHT,ZWALL_O_HOR,ZCAN_HW_RATIO, & ZROAD_O_GRND, ZGARDEN_O_GRND, ZWALL_O_GRND, & ZALB_ROOF, ZEMIS_ROOF, & ZHC_ROOF,ZTC_ROOF,ZD_ROOF, & ZALB_ROAD, ZEMIS_ROAD, ZSVF_ROAD, & ZHC_ROAD,ZTC_ROAD,ZD_ROAD, & ZALB_WALL, ZEMIS_WALL, ZSVF_WALL, & ZSVF_GARDEN, & ZHC_WALL,ZTC_WALL,ZD_WALL, & ZRN_ROOF, ZH_ROOF, ZLE_ROOF, ZLEW_ROOF, ZGFLUX_ROOF, & ZRUNOFF_ROOF, & ZRN_ROAD, ZH_ROAD, ZLE_ROAD, ZLEW_ROAD, ZGFLUX_ROAD, & ZRUNOFF_ROAD, & ZRN_WALL_A, ZH_WALL_A, ZLE_WALL_A, ZGFLUX_WALL_A, & ZRN_WALL_B, ZH_WALL_B, ZLE_WALL_B, ZGFLUX_WALL_B, & ZRN_STRLROOF,ZH_STRLROOF,ZLE_STRLROOF, ZGFLUX_STRLROOF, & ZRUNOFF_STRLROOF, & ZRN_BLT,ZH_BLT,ZLE_BLT, ZGFLUX_BLT, & ZRNSNOW_ROOF, ZHSNOW_ROOF, ZLESNOW_ROOF, ZGSNOW_ROOF, & ZMELT_ROOF, & ZRNSNOW_ROAD, ZHSNOW_ROAD, ZLESNOW_ROAD, ZGSNOW_ROAD, & ZMELT_ROAD, & ZRN_GRND, ZH_GRND, ZLE_GRND, ZGFLUX_GRND, & ZRN_TOWN, ZH_TOWN, ZLE_TOWN, ZGFLUX_TOWN, ZEVAP_TOWN, & ZRUNOFF_TOWN, ZSFCO2, & ZUW_GRND, ZUW_ROOF, ZDUWDU_GRND, ZDUWDU_ROOF, & ZUSTAR_TOWN, ZCD, ZCDN, ZCH_TOWN, ZRI_TOWN, & ZTS_TOWN, ZEMIS_TOWN, ZDIR_ALB_TOWN, ZSCA_ALB_TOWN, & ZRESA_TOWN, ZDQS_TOWN, ZQF_TOWN, ZQF_BLD, & ZFLX_BLD, ZAC_ROAD, ZAC_GARDEN, ZAC_GREENROOF, & ZAC_ROAD_WAT, ZAC_GARDEN_WAT, ZAC_GREENROOF_WAT, & ZABS_SW_ROOF,ZABS_LW_ROOF, & ZABS_SW_SNOW_ROOF,ZABS_LW_SNOW_ROOF, & ZABS_SW_ROAD,ZABS_LW_ROAD, & ZABS_SW_SNOW_ROAD,ZABS_LW_SNOW_ROAD, & ZABS_SW_WALL_A,ZABS_LW_WALL_A, & ZABS_SW_WALL_B,ZABS_LW_WALL_B, & ZABS_SW_PANEL,ZABS_LW_PANEL, & ZABS_SW_GARDEN,ZABS_LW_GARDEN, & ZABS_SW_GREENROOF,ZABS_LW_GREENROOF, & ZG_GREENROOF_ROOF, & CCOOL_COIL, ZF_WATER_COND, CHEAT_COIL, & HNATVENT, ZNATVENT, IDAY, ZAUX_MAX, ZT_FLOOR, & ZT_MASS, ZH_BLD_COOL, ZT_BLD_COOL, ZH_BLD_HEAT, & ZLE_BLD_COOL, ZLE_BLD_HEAT, ZH_WASTE, ZLE_WASTE, & ZF_WASTE_CAN, ZHVAC_COOL, ZHVAC_HEAT, ZQIN, ZQIN_FRAD, & ZQIN_FLAT, ZGR, ZEFF_HEAT, ZINF, & ZTCOOL_TARGET, ZTHEAT_TARGET, ZHR_TARGET, ZT_WIN2, & ZQI_BLD, ZV_VENT, ZCAP_SYS_HEAT, ZCAP_SYS_RAT, ZT_ADP, & ZM_SYS_RAT, ZCOP_RAT, ZCAP_SYS, ZM_SYS, ZCOP, ZQ_SYS, & ZT_SYS, ZTR_SW_WIN, ZFAN_POWER, ZHC_FLOOR, ZTC_FLOOR, & ZD_FLOOR, ZT_WIN1, ZABS_SW_WIN, ZABS_LW_WIN, ZSHGC, & ZSHGC_SH, ZUGG_WIN, ZALB_WIN, ZABS_WIN, ZEMIT_LW_FAC, & ZEMIT_LW_GRND, ZT_RAD_IND, ZREF_SW_GRND, ZREF_SW_FAC, & ZHU_BLD, ZTIME, LSHADE, ZSHADE, GSHAD_DAY, & GNATVENT_NIGHT, & CBEM, & ZN_FLOOR, ZWALL_O_BLD, ZGLAZ_O_BLD, ZMASS_O_BLD, & ZFLOOR_HW_RATIO, ZF_FLOOR_MASS, ZF_FLOOR_WALL, & ZF_FLOOR_WIN, ZF_FLOOR_ROOF, ZF_WALL_FLOOR, ZF_WALL_MASS,& ZF_WALL_WIN, ZF_WIN_FLOOR, ZF_WIN_MASS, ZF_WIN_WALL, & ZF_MASS_FLOOR, ZF_MASS_WALL, ZF_MASS_WIN, LCANOPY, & ZTRAN_WIN, CCH_BEM, ZROUGH_ROOF, ZROUGH_WALL, ZF_WIN_WIN,& LPAR_RD_IRRIG, ZRD_START_MONTH, ZRD_END_MONTH, & ZRD_START_HOUR, ZRD_END_HOUR, ZRD_24H_IRRIG, ZIRRIG_ROAD,& ZEMIS_PANEL, ZALB_PANEL, ZEFF_PANEL, ZFRAC_PANEL, & ZRESIDENTIAL, & ZTHER_PROD_PANEL, ZPHOT_PROD_PANEL, ZPROD_PANEL, & ZTHER_PROD_BLD , ZPHOT_PROD_BLD , ZPROD_BLD , & ZTHER_PRODC_DAY, ZH_PANEL, ZRN_PANEL, & ZDT_RES, ZDT_OFF, & ZCUR_TCOOL_TARGET, ZCUR_THEAT_TARGET, ZCUR_QIN ) ! Calculate the total (direct + diffuse radiations) town albedo IF (ZTDIR_SW(1,1) == 0.) THEN ZALB_TOWN = 0. ELSE ZALB_TOWN = (ZDIR_ALB_TOWN * ZTDIR_SW(1,1) + ZSCA_ALB_TOWN * ZTSCA_SW(1,1)) / (ZTDIR_SW(1,1) + ZTSCA_SW(1,1)) END IF ! TEB does not modify the wind direction ZDIR_CANYON = ZDIR(1) ! Town specific humidity assumed to be same as canyon humidity ZQ_TOWN = ZQ_CANYON XU_CANYON = ZU_CANYON ! The heating and cooling energy demand are converted ! from W/m²(bld) to W/m²(tot). ZHVAC_COOL_TOT = ZBLD * ZHVAC_COOL ZHVAC_HEAT_TOT = ZBLD * ZHVAC_HEAT END SUBROUTINE TEB_DRIVER END MODULE MODD_WRF_TEB_DRIVER