PROGRAM DRIVER
! ======================================================================
!
! ......................................................................
! METHOD
! ......................................................................
!
! Program designed to create, modify, and test TEB routines before being
! actually implemented into another driver or model (e.g. SURFEX or in an
! atmospheric model)
!
! Using just TEB physical routines, new arguments can be created or
! eliminated as local variables in Driver.
!
!
! Notes:
! The current version of Driver does not include the option TEB_CANOPY.
! Outputs have to be declared in Driver.
!
! AUTHOR
!
! B. Bueno, Meteo-France
!
! MODIFICATIONS
!
! Original 08/12/10
! Modification 04/13 (V. Masson) adds garden (with a proxi SVAT)
! greenroofs (with a proxi SVAT)
! road orientation option
! separated walls option
! Modification 10/13 (V. Masson) adds irrigation and solar panels
! ---------------------------------------------------------------
! Modules
! ---------------------------------------------------------------
!
USE MODD_CSTS, ONLY : XCPD, XSTEFAN, XPI, XDAY, XKARMAN, &
XLVTT, XLSTT, XLMTT, XRV, XRD, XG, 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_INIT_SURFCONSPHY
USE MODI_INI_CSTS
USE MODI_ADD_FORECAST_TO_DATE_SURF
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
USE MODI_OPEN_CLOSE_BIN_ASC_FORC
!
USE MODD_FORC_ATM, ONLY: CSV ,&! name of all scalar variables
XDIR_ALB ,&! direct albedo for each band
XSCA_ALB ,&! diffuse albedo for each band
XEMIS ,&! emissivity
XTSRAD ,&! radiative temperature
XTSUN ,&! solar time (s from midnight)
XZS ,&! orography (m)
XZREF ,&! height of T,q forcing (m)
XUREF ,&! height of wind forcing (m)
XTA ,&! air temperature forcing (K)
XQA ,&! air humidity forcing (kg/m3)
XSV ,&! scalar variables
XU ,&! zonal wind (m/s)
XV ,&! meridian wind (m/s)
XDIR_SW ,&! direct solar radiation (on horizontal surf.)
XSCA_SW ,&! diffuse solar radiation (on horizontal surf.)
XSW_BANDS ,&! mean wavelength of each shortwave band (m)
XZENITH ,&! zenithal angle (radian from the vertical)
XZENITH2 ,&! zenithal angle (radian from the vertical)
XAZIM ,&! azimuthal angle (radian from North, clockwise)
XLW ,&! longwave radiation (on horizontal surf.)
XPS ,&! pressure at atmospheric model surface (Pa)
XPA ,&! pressure at forcing level (Pa)
XRHOA ,&! density at forcing level (kg/m3)
XCO2 ,&! CO2 concentration in the air (kg/m3)
XSNOW ,&! snow precipitation (kg/m2/s)
XRAIN ,&! liquid precipitation (kg/m2/s)
XSFTH ,&! flux of heat (W/m2)
XSFTQ ,&! flux of water vapor (kg/m2/s)
XSFU ,&! zonal momentum flux (m/s)
XSFV ,&! meridian momentum flux (m/s)
XSFCO2 ,&! flux of CO2 (kg/m2/s)
XSFTS ,&! flux of scalar var. (kg/m2/s)
XPEW_A_COEF ,&! implicit coefficients
XPEW_B_COEF ,&!
XPET_A_COEF ,&
XPEQ_A_COEF ,&
XPET_B_COEF ,&
XPEQ_B_COEF
USE PROXI_SVAT_CONSTS, ONLY: VEG_ALB, VEG_EMIS, GARDEN_BR, GREENROOF_BR
!
IMPLICIT NONE
! ---------------------------------------------------------------
! Namelist: Add to allow parameters to be changed dynamically using
! namelist file.
! ---------------------------------------------------------------
!
namelist /dimensions/ NROOF_LAYER, NROAD_LAYER, NWALL_LAYER, NFLOOR_LAYER
namelist /parameters/ XTSTEP_SURF, IYEAR, IMONTH, IDAY, ZTIME_START, ZLON, ZLAT ,&
INB_STEP_ATM, INB_ATM, KSW, ZZREF, CBEM, HROAD_DIR ,&
HWALL_OPT, LGARDEN, LGREENROOF, ZFRAC_GR, LSOLAR_PANEL ,&
ZFRAC_PANEL, LPAR_RD_IRRIG, CCOOL_COIL ,&
CHEAT_COIL, HZ0H, ZZ0, ZBLD, ZGARDEN, ZBLD_HEIGHT ,&
ZWALL_O_HOR, ZROAD_DIR, 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, ZHC_FLOOR, ZTC_FLOOR, ZD_FLOOR, ZH_TRAFFIC ,&
ZLE_TRAFFIC, ZH_INDUSTRY, ZLE_INDUSTRY, ZRD_START_MONTH, ZRD_END_MONTH ,&
ZRD_START_HOUR, ZRD_END_HOUR, ZRD_24H_IRRIG, ZEMIS_PANEL, ZALB_PANEL ,&
ZEFF_PANEL, ZRESIDENTIAL, ZDT_RES, ZDT_OFF, PFLOOR_HEIGHT, ZINF, ZQIN ,&
ZQIN_FRAD, ZQIN_FLAT, ZGR, ZSHGC, PU_WIN, ZSHADE, ZSHGC_SH ,&
ZNATVENT, ZV_VENT, ZF_WATER_COND, ZF_WASTE_CAN, ZTCOOL_TARGET, ZTHEAT_TARGET ,&
ZHR_TARGET, ZEFF_HEAT, ZCAP_SYS_HEAT, ZCAP_SYS_RAT, ZT_ADP, ZM_SYS_RAT ,&
ZCOP_RAT, CCH_BEM, ZROUGH_ROOF, ZROUGH_WALL, ZT_ROAD, ZT_ROOF, ZT_WALL ,&
ZT_FLOOR, ZT_MASS, ZTI_BLD, ZT_CANYON, ZT_WIN1, ZT_WIN2, ZQ_CANYON, ZQI_BLD, &
VEG_ALB, VEG_EMIS, GARDEN_BR, GREENROOF_BR, NO_OUTPUT
! ---------------------------------------------------------------
! Declarations of local variables (INPUTS)
! ---------------------------------------------------------------
!
! Simulation - prepared for CAPITOUL atmospheric forcing
REAL :: XTSTEP_SURF
INTEGER :: IYEAR ! Current year (UTC)
INTEGER :: IMONTH ! Current month (UTC)
INTEGER :: IDAY ! Current day (UTC)
REAL :: ZTIME_START! Time at start of the run (s)
REAL,DIMENSION(1) :: ZLON ! Longitude (deg)
REAL,DIMENSION(1) :: ZLAT ! Latitude (deg)
INTEGER :: INB_STEP_ATM! Forcing time-steps
INTEGER :: INB_ATM ! number time the driver calls the TEB
! ! routines during a forcing time-step
! ! --> it defines the time-step for TEB
INTEGER :: KSW ! number of spectral bands in SW forcing
REAL,DIMENSION(1) :: ZZREF ! Atm. Forcing height above roof level
!
! GO TO LINE 550 FOR MORE INPUTS
!
! --------------------------------------------------------------------- ! || ||
! declarations of local variables (PARAMETERS) ! || ||
! --------------------------------------------------------------------- ! || ||
! ! || ||
REAL,DIMENSION(1) :: ZTI_BLD ! indoor air temperature ! || ||
REAL,DIMENSION(1) :: ZT_CANYON ! air canyon temperature ! || ||
REAL,DIMENSION(1) :: ZQA_KGKG ! air humidity at forcing level (kg/kg) ! || G ||
REAL :: ZTIMEC = 0.0 ! Current duration since start of the run(s) ! || O ||
INTEGER :: JFORC_STEP ! atmospheric loop index ! || ||
INTEGER :: JSURF_STEP ! Driver loop index ! || B ||
INTEGER :: JLOOP ! loop counter ! || E ||
INTEGER :: NWALL_LAYER ! number of wall layers ! || L ||
INTEGER :: NROOF_LAYER ! number of roof layers ! || O ||
INTEGER :: NROAD_LAYER ! number of road layers ! || W ||
INTEGER :: NFLOOR_LAYER ! number of floor layers ! || ||
TYPE(DATE_TIME) :: TPTIME ! || ||
CHARACTER(LEN=3) :: HIMPLICIT_WIND='NEW' ! Implicitation option for wind fluxes ! || ||
REAL,DIMENSION(:,:), ALLOCATABLE :: ZHC_WALL ! Heat capacity of wall layers ! || ||
REAL,DIMENSION(:,:), ALLOCATABLE :: ZTC_WALL ! Thermal conductivity of wall layers ! || ||
REAL,DIMENSION(:,:), ALLOCATABLE :: ZD_WALL ! Thickness of wall layers !\\ //
REAL,DIMENSION(:,:), ALLOCATABLE :: ZHC_ROOF ! Heat capacity of roof layers ! \\ //
REAL,DIMENSION(:,:), ALLOCATABLE :: ZTC_ROOF ! Thermal conductivity of roof layers ! \\ //
REAL,DIMENSION(:,:), ALLOCATABLE :: ZD_ROOF ! Thickness of roof layers ! \\/
REAL,DIMENSION(:,:), ALLOCATABLE :: ZHC_ROAD ! Heat capacity of road layers !
REAL,DIMENSION(:,:), ALLOCATABLE :: ZTC_ROAD ! Thermal conductivity of road layers ! || ||
REAL,DIMENSION(:,:), ALLOCATABLE :: ZD_ROAD ! Thickness of road layers ! || ||
REAL,DIMENSION(:,:), ALLOCATABLE :: ZT_ROAD ! road layers temperatures ! || F ||
REAL,DIMENSION(:,:), ALLOCATABLE :: ZT_ROOF ! roof layers temperatures ! || O ||
REAL,DIMENSION(:,:), ALLOCATABLE :: ZT_WALL! wall layers temperatures (wall 'A') ! || R ||
REAL,DIMENSION(:,:), ALLOCATABLE :: ZT_WALL_B! wall layers temperatures (wall 'B') ! || ||
REAL,DIMENSION(1) :: ZROAD_DIR ! road direction (° from North, clockwise) ! || U ||
REAL,DIMENSION(1) :: ZFRAC_GR ! fraction of greenroofs on roofs ! || R ||
REAL,DIMENSION(1) :: ZFRAC_PANEL ! fraction of solar panels on roofs ! || B ||
! || A ||
!* snow variables ! || N ||
CHARACTER(LEN=3) :: HSNOW_ROOF = "1-L"! Option for roof snow ! || ||
REAL,DIMENSION(1,1):: ZWSNOW_ROOF= 0. ! Initial Amount of roof snow reservoir ! || P ||
REAL,DIMENSION(1,1):: ZTSNOW_ROOF ! layer temperature of roof snow ! || A ||
REAL,DIMENSION(1,1):: ZRSNOW_ROOF ! density of roof snow ! || R ||
REAL,DIMENSION(1) :: ZTSSNOW_ROOF ! surface temperature of roof snow ! || A ||
CHARACTER(LEN=3) :: HSNOW_ROAD = "1-L"! Option for road snow ! || M ||
REAL,DIMENSION(1,1):: ZWSNOW_ROAD= 0. ! Initial amount of road snow reservoir ! || E ||
REAL,DIMENSION(1,1):: ZTSNOW_ROAD ! layer temperature of road snow ! || T ||
REAL,DIMENSION(1,1):: ZRSNOW_ROAD ! density of road snow ! || E ||
REAL,DIMENSION(1) :: ZTSSNOW_ROAD ! surface temperature of road snow ! || R ||
!* radiative variables ! || S ||
REAL,DIMENSION(1) :: ZALB_WALL ! albedo of walls ! || ||
REAL,DIMENSION(1) :: ZEMIS_WALL ! emissivity of walls ! || ||
REAL,DIMENSION(1) :: ZALB_ROOF ! albedo of roofs !\\ //
REAL,DIMENSION(1) :: ZEMIS_ROOF ! emissivity of roofs ! \\ //
REAL,DIMENSION(1) :: ZESNOW_ROAD ! road snow emissivity ! \\ //
REAL,DIMENSION(1) :: ZALB_ROAD ! albedo of roads ! \\/
REAL,DIMENSION(1) :: ZEMIS_ROAD ! emissivity of roads !
REAL,DIMENSION(1) :: ZASNOW_ROOF ! roof snow albedo ! || ||
REAL,DIMENSION(1) :: ZASNOW_ROAD ! road snow albedo ! || A ||
REAL,DIMENSION(1) :: ZABS_SW_ROOF ! Shortwave radiation absorbed by roofs ! || N ||
REAL,DIMENSION(1) :: ZABS_SW_ROAD ! Shortwave radiation absorbed by roads ! || D ||
REAL,DIMENSION(1) :: ZABS_SW_WALL_A ! Shortwave radiation absorbed by wall A ! || ||
REAL,DIMENSION(1) :: ZABS_SW_WALL_B ! Shortwave radiation absorbed by wall B ! || T ||
REAL,DIMENSION(1) :: ZABS_SW_GARDEN ! Shortwave radiation absorbed by gardens ! || E ||
REAL,DIMENSION(1) :: ZABS_SW_GREENROOF ! Shortwave radiation absorbed by greenroofs ! || B ||
REAL,DIMENSION(1) :: ZABS_LW_ROOF ! Longwave radiation absorbed by roofs ! || ||
REAL,DIMENSION(1) :: ZABS_LW_ROAD ! Longwave radiation absorbed by roads ! || O ||
REAL,DIMENSION(1) :: ZABS_LW_WALL_A ! Longwave radiation absorbed by wall A ! || P ||
REAL,DIMENSION(1) :: ZABS_LW_WALL_B ! Longwave radiation absorbed by wall B ! || T ||
REAL,DIMENSION(1) :: ZABS_LW_GARDEN ! Longwave radiation absorbed by gardens ! || I ||
REAL,DIMENSION(1) :: ZABS_LW_GREENROOF ! Longwave radiation absorbed by greenroofs ! || O ||
REAL,DIMENSION(1) :: ZABS_SW_SNOW_ROOF ! Shortwave radiation absorbed by roof snow ! || N ||
REAL,DIMENSION(1) :: ZABS_SW_SNOW_ROAD ! Shortwave radiation absorbed by road snow ! || S ||
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) :: ZDIR_ALB_TOWN ! town direct albedo ! || ||
REAL,DIMENSION(1) :: ZSCA_ALB_TOWN ! town scaterred albedo ! || ||
REAL,DIMENSION(1) :: ZCAN_HW_RATIO ! canyon h/W ! || ||
REAL,DIMENSION(1) :: ZSVF_ROAD ! road sky view factor ! || ||
REAL,DIMENSION(1) :: ZSVF_GARDEN ! garden sky view factor ! || ||
REAL,DIMENSION(1) :: ZSVF_WALL ! wall sky view factor ! || ||
REAL,DIMENSION(1) :: ZWAKE ! reduction of average wind speed ! || ||
REAL,DIMENSION(1) :: ZGSNOW_ROOF = 0.0 ! roof snow conduction !\\ //
REAL,DIMENSION(1) :: ZHSNOW_ROOF ! \\ //
! Anthropogenic heat fluxes ! \\ //
REAL,DIMENSION(1) :: ZH_TRAFFIC ! heat fluxes due to traffic ! \\/
REAL,DIMENSION(1) :: ZLE_TRAFFIC ! heat fluxes due to traffic !
REAL,DIMENSION(1) :: XH_TRAFFIC ! heat fluxes due to traffic ! \\/
REAL,DIMENSION(1) :: XLE_TRAFFIC ! heat fluxes due to traffic
REAL,DIMENSION(1) :: ZH_INDUSTRY ! heat fluxes due to factories ! || ||
REAL,DIMENSION(1) :: ZLE_INDUSTRY ! heat fluxes due to factories ! || ||
! Urban options ! || ||
LOGICAL :: LPAR_RD_IRRIG ! Flag for road watering ! || S ||
LOGICAL :: LSOLAR_PANEL ! Flag to use a solar panels on roofs ! || P ||
LOGICAL :: LGARDEN ! Flag to use a vegetation scheme in gardens ! || E ||
LOGICAL :: LGREENROOF ! Flag to use a green roofs scheme ! || C ||
CHARACTER(LEN=6) :: HZ0H ! TEB option for z0h roof & road ! || I ||
CHARACTER(LEN=4) :: HROAD_DIR ! road direction option : ! || F ||
! ! 'UNIF' : uniform roads ! || I ||
! ! 'ORIE' : specified road orientation ! || C ||
CHARACTER(LEN=4) :: HWALL_OPT ! Wall option ! || A ||
! ! 'UNIF' : uniform walls ! || T ||
! ! 'TWO ' : 2 opposite walls ! || I ||
! Canyon geometry ! || O ||
REAL,DIMENSION(1) :: ZZ0 ! Roughness length (m) ! || N ||
REAL,DIMENSION(1) :: ZBLD ! Horizontal building area density ! || S ||
REAL,DIMENSION(1) :: ZGARDEN ! fraction of GARDEN areas ! || ||
REAL,DIMENSION(1) :: ZBLD_HEIGHT ! Canyon height (m) ! || ||
REAL,DIMENSION(1) :: ZWALL_O_HOR ! Vertical to horizonal surf ratio ! || ||
! Urban variables ! || ||
REAL,DIMENSION(1) :: ZU_CANYON = 1.0 ! hor. wind in canyon ! || ||
REAL,DIMENSION(1) :: ZQ_CANYON ! canyon air specific humidity (kg/kg) ! || ||
REAL,DIMENSION(1) :: ZDIR_CANYON ! canyon wind direction ! || ||
REAL,DIMENSION(1) :: ZTS_ROOF ! surface temperature ! || ||
REAL,DIMENSION(1) :: ZTS_ROAD ! surface temperature !\\ //
REAL,DIMENSION(1) :: ZTS_WALL_A ! surface temperature ! \\ //
REAL,DIMENSION(1) :: ZTS_WALL_B ! surface temperature ! \\ //
! ! \\/
REAL,DIMENSION(1) :: ZZ_LOWCAN ! altitude of air layer above road !
REAL,DIMENSION(1) :: ZT_LOWCAN ! temperature of air above road ! || ||
REAL,DIMENSION(1) :: ZU_LOWCAN ! wind above road ! || ||
REAL,DIMENSION(1) :: ZQ_LOWCAN ! humidity above road ! || ||
REAL,DIMENSION(1) :: ZEXNS ! surface exner function ! || ||
REAL,DIMENSION(1) :: ZEXNA ! exner function ! || ||
REAL,DIMENSION(1) :: ZROAD ! fraction of roads ! || ||
REAL,DIMENSION(1) :: ZWS_ROOF = 0.! roof water content (kg/m2) ! || ||
REAL,DIMENSION(1) :: ZWS_ROAD = 0.! road water content (kg/m2) ! || ||
REAL,DIMENSION(1) :: ZPEW_A_COEF ! implicit coefficients ! || ||
REAL,DIMENSION(1) :: ZPEW_B_COEF ! for wind coupling ! || ||
REAL,DIMENSION(1) :: ZPEW_A_COEF_LOWCAN! ! || ||
REAL,DIMENSION(1) :: ZPEW_B_COEF_LOWCAN! ! || ||
REAL,DIMENSION(1) :: ZWALL_O_GRND ! Wall to ground surface ratio ! || ||
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) :: ZVMOD ! Module of wind speed at the top of the canyon! || ||
REAL,DIMENSION(1) :: ZCD ! drag coefficient ! || ||
REAL,DIMENSION(1) :: ZCDN ! neutral drag coefficient ! || ||
REAL,DIMENSION(1) :: ZAC_ROAD ! road aerodynamical conductance ! || ||
REAL,DIMENSION(1) :: ZAC_ROAD_WAT ! road aerodynamical conductance (for water) ! || ||
REAL,DIMENSION(1) :: ZAC_GARDEN ! garden aerodynamical conductance !\\ //
REAL,DIMENSION(1) :: ZAC_GARDEN_WAT ! garden aerodynamical conductance for vapor ! \\ //
REAL,DIMENSION(1) :: ZAC_GREENROOF ! green roofs aerodynamical conductance ! \\ //
REAL,DIMENSION(1) :: ZAC_GREENROOF_WAT! green roofs aerodynamical conductance ! \\/
! ! for vapor !
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) :: ZUSTAR_TOWN ! Fraction velocity for town ! || ||
REAL,DIMENSION(1) :: ZRESA_TOWN ! Aerodynamical resistance ! || ||
REAL,DIMENSION(1) :: ZCH_TOWN ! Heat exchange coefficient ! || ||
REAL,DIMENSION(1) :: ZRI_TOWN ! Richardson number ! || ||
REAL,DIMENSION(1) :: ZRUNOFF_TOWN ! runoff for town ! || ||
REAL,DIMENSION(1) :: ZRUNOFF_ROOF ! runoff for roof ! || ||
REAL,DIMENSION(1) :: ZRUNOFF_ROAD ! runoff for road ! || ||
! Road-wall-budget routines ! || ||
REAL,DIMENSION(1) :: ZGSNOW_ROAD = 0.0! road snow conduction ! || ||
! Urban fluxes variables ! || ||
REAL,DIMENSION(1) :: ZROOF_FRAC ! roof, wall, ! || ||
REAL,DIMENSION(1) :: ZWALL_FRAC ! road, and green area ! || ||
REAL,DIMENSION(1) :: ZROAD_FRAC ! fractions ! || ||
REAL,DIMENSION(1) :: ZGARDEN_FRAC ! fractions ! || ||
REAL,DIMENSION(1) :: ZTOTS_O_HORS ! total canyon+roof surf over horizontal surf ! || ||
REAL,DIMENSION(1) :: ZUW_GRND ! friction flux over ground ! || ||
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) :: ZGFLUX_ROOF ! flux through the roof ! \\ //
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) :: ZGFLUX_ROAD ! flux through the road ! || ||
REAL,DIMENSION(1) :: ZRN_WALL_A ! net radiation over wall ! || ||
REAL,DIMENSION(1) :: ZRN_WALL_B ! net radiation over wall ! || ||
REAL,DIMENSION(1) :: ZH_WALL_A = 0.0 ! sensible heat flux over wall ! || ||
REAL,DIMENSION(1) :: ZH_WALL_B = 0.0 ! sensible heat flux over wall ! || ||
REAL,DIMENSION(1) :: ZLE_WALL_A ! latent heat flux over wall ! || ||
REAL,DIMENSION(1) :: ZLE_WALL_B ! latent heat flux over wall ! || ||
REAL,DIMENSION(1) :: ZGFLUX_WALL_A ! flux through the wall ! || ||
REAL,DIMENSION(1) :: ZGFLUX_WALL_B ! flux through the wall ! || ||
! || ||
REAL,DIMENSION(1) :: ZG_GREENROOF_ROOF! heat flux between base of greenroof ! || ||
! ! and structural roof ! || ||
! || ||
REAL,DIMENSION(1) :: ZRNSNOW_ROOF = 0.0 ! net radiation over snow ! || ||
REAL,DIMENSION(1) :: ZRNSNOW_ROAD = 0.0 ! net radiation over snow ! || ||
REAL,DIMENSION(1) :: ZHSNOW_ROAD = 0.0 ! sensible heat flux over snow ! || ||
REAL,DIMENSION(1) :: ZLESNOW_ROAD = 0.0 ! latent heat flux over snow ! || ||
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) :: ZFLX_BLD ! heat flx from bld to its structure ! \\ //
REAL,DIMENSION(1) :: ZDQS_TOWN ! storage inside town materials ! \\/
REAL,DIMENSION(1) :: ZQF_TOWN ! total anthropogenic heat !
REAL,DIMENSION(1) :: ZMELT_ROOF = 0.0 ! snow melting on roof ! || ||
REAL,DIMENSION(1) :: ZMELT_ROAD = 0.0 ! snow melting on road ! || ||
REAL,DIMENSION(1) :: ZQF_BLD ! || ||
REAL,DIMENSION(1) :: ZSFCO2 ! Surface Flux of CO2 ! || ||
! ! || ||
! new arguments created after BEM ! || ||
! ! || ||
CHARACTER(LEN=3) :: CBEM ! Building Energy model 'DEF' or 'BEM' ! || ||
CHARACTER(LEN=12) :: CCOOL_COIL ! option for cooling device type ! || ||
CHARACTER(LEN=6) :: CHEAT_COIL ! option for heating device type ! || ||
REAL, DIMENSION(1) :: ZF_WATER_COND ! fraction of evaporation for the condensers ! || ||
CHARACTER(LEN=4), DIMENSION(1) :: HNATVENT ! || ||
REAL, DIMENSION(1) :: ZNATVENT ! flag to describe surventilation system for ! || ||
! ! i/o 0 for NONE, 1 for MANU and 2 for AUTO ! || ||
REAL, DIMENSION(1) :: ZAUX_MAX = 5. ! Auxiliar variable for autosize calcs (not used)! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZT_FLOOR ! Floor layers temperatures [K] ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZT_MASS ! Internal mass layers temperatures [K] ! || ||
REAL, DIMENSION(1) :: PFLOOR_HEIGHT ! Floor height (m) ! || ||
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) :: ZF_WASTE_CAN ! fraction of waste heat released ! || ||
! ! into the canyon ! || ||
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)] ! || ||
REAL, DIMENSION(1) :: ZHVAC_COOL_TOT ! Energy consumption of the cooling system ! || ||
! [W m-2(tot)] ! || ||
REAL, DIMENSION(1) :: ZHVAC_HEAT_TOT ! Energy consumption of the heating system ! || ||
! [W m-2(tot)] ! || ||
REAL, DIMENSION(1) :: ZQIN ! Internal heat gains [W m-2(floor)] ! || ||
REAL, DIMENSION(1) :: ZQIN_FRAD ! Radiant fraction of internal heat gains ! || ||
REAL, DIMENSION(1) :: ZQIN_FLAT ! Latent franction of internal heat gains ! || ||
REAL, DIMENSION(1) :: ZGR ! Glazing ratio ! || ||
REAL, DIMENSION(1) :: ZEFF_HEAT ! Efficiency of the heating system ! || ||
REAL, DIMENSION(1) :: ZINF ! Infiltration flow rate [AC/H] ! || ||
REAL, DIMENSION(1) :: ZTCOOL_TARGET ! Cooling setpoint of HVAC system [K] ! || ||
REAL, DIMENSION(1) :: ZTHEAT_TARGET ! Heating setpoint of HVAC system [K] ! || ||
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) :: ZHR_TARGET ! Relative humidity setpoint ! || ||
REAL, DIMENSION(1) :: ZT_WIN2 ! Indoor window temperature [K] !\\ //
REAL, DIMENSION(1) :: ZQI_BLD ! Indoor air specific humidity [kg kg-1] ! \\ //
REAL, DIMENSION(1) :: ZV_VENT ! Ventilation flow rate [AC/H] ! \\ //
REAL, DIMENSION(1) :: ZCAP_SYS_HEAT ! Capacity of the heating system ! \\/
! [W m-2(bld)] !
REAL, DIMENSION(1) :: ZCAP_SYS_RAT ! Rated capacity of the cooling system ! || ||
! [W m-2(bld)] ! || ||
REAL, DIMENSION(1) :: ZT_ADP ! Apparatus dewpoint temperature of the ! || ||
! cooling coil [K] ! || ||
REAL, DIMENSION(1) :: ZM_SYS_RAT ! Rated HVAC mass flow rate ! || ||
! [kg s-1 m-2(bld)] ! || ||
REAL, DIMENSION(1) :: ZCOP_RAT ! Rated COP of the cooling system ! || ||
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(:,:), ALLOCATABLE :: ZHC_FLOOR ! heat capacity for floor layers ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZTC_FLOOR ! thermal conductivity for ! || ||
! floor layers ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZD_FLOOR ! depth of floor layers ! || ||
! || ||
REAL, DIMENSION(1) :: ZT_WIN1 ! outdoor window temperature [K] ! || ||
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) :: ZSHGC ! window solar transmittance ! \\ //
REAL, DIMENSION(1) :: ZSHGC_SH ! window + shading solar heat gain coef. ! \\/
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) :: PU_WIN ! window U-factor [K m W-2] ! || ||
REAL, DIMENSION(1) :: ZABS_WIN ! window absortance ! || ||
REAL, DIMENSION(1) :: ZTRAN_WIN ! window transmittance ! || ||
! ! || ||
! new argument for the UTCI calculation ! || ||
REAL, DIMENSION(1) :: ZEMIT_LW_GRND ! LW flux emitted by the ground (W/m² ground)! || ||
REAL, DIMENSION(1) :: ZEMIT_LW_FAC ! LW flux emitted by the facade (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 ! || ||
! ! || ||
! solar panels ! || ||
REAL, DIMENSION(1) :: ZEMIS_PANEL ! Emissivity of solar panel [-] ! || ||
REAL, DIMENSION(1) :: ZALB_PANEL ! albedo of solar panel [-] ! || ||
REAL, DIMENSION(1) :: ZEFF_PANEL ! Efficiency of solar panel [-] ! || ||
REAL, DIMENSION(1) :: ZTHER_PROD_PANEL ! Thermal Energy production ! || ||
! ! of solar panel on roofs (W/m2 panel) ! || ||
REAL, DIMENSION(1) :: ZPHOT_PROD_PANEL ! Photovoltaic Energy production ! || ||
! ! of solar panel on roofs (W/m2 panel) ! || ||
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) :: ZTHER_PRODC_DAY=0.! Present day integrated thermal production ! \\/
! ! of energy (J/m2 panel). zero value at start!
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) :: ZRESIDENTIAL ! Fraction of residential use in buildings(-)! || ||
REAL :: ZDT_RES ! target temperature change when unoccupied ! || ||
! ! (K) (residential buildings) ! || ||
REAL :: ZDT_OFF ! target temperature change when unoccupied ! || ||
! ! (K) (office buildings) ! || ||
! ! || ||
! road watering ! || ||
REAL, DIMENSION(1) :: ZRD_START_MONTH ! start month for watering of roads(included)! || ||
REAL, DIMENSION(1) :: ZRD_END_MONTH ! end month for watering of roads(included)! || ||
REAL, DIMENSION(1) :: ZRD_START_HOUR ! start hour for watering of roads(included)! || ||
REAL, DIMENSION(1) :: ZRD_END_HOUR ! end hour for watering of roads(excluded)! || ||
REAL, DIMENSION(1) :: ZRD_24H_IRRIG ! 24h quantity of water used ! || ||
! ! for road watering (liter/m2) ! || ||
REAL, DIMENSION(1) :: ZIRRIG_ROAD ! road irrigation during current time-step ! || ||
! ! || ||
! new arguments for shading, schedule or natural ventilation ! || ||
LOGICAL,DIMENSION(1) :: LSHADE ! Flag to use shading devices ! || ||
REAL, DIMENSION(1) :: ZSHADE ! flag to activate shading devices ! || ||
! ! -> REAL for i/o 0. or 1 ! || ||
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) :: 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 ! || ||
LOGICAL :: LCANOPY ! is canopy active ? ! || ||
CHARACTER(LEN=5) :: CCH_BEM ! TEB option for building outside conv. coef ! || ||
REAL, DIMENSION(1) :: ZROUGH_ROOF ! roof roughness coef. ! || ||
REAL, DIMENSION(1) :: ZROUGH_WALL ! wall roughness coef. ! || ||
REAL, DIMENSION(1) :: ZF_WIN_WIN ! indoor win to win view factor ! || ||
! || ||
! Average urban fluxes variables ! || ||
REAL,DIMENSION(1) :: ZTS_TOWN ! town surface temperature ! || ||
REAL,DIMENSION(1) :: ZEMIS_TOWN ! town equivalent emissivity ! || ||
REAL,DIMENSION(1) :: ZALB_TOWN ! town eqivalent albedo ! || ||
REAL,DIMENSION(1) :: ZQ_TOWN ! town eqivalent specific humidity ! || ||
REAL,DIMENSION(1) :: ZESNOW_ROOF = 1.0! snow roof emissivity ! || ||
REAL,DIMENSION(1) :: ZABS_LW_SNOW_ROOF ! abs. LW rad. by snow ! || ||
REAL,DIMENSION(1) :: ZABS_LW_SNOW_ROAD ! abs. LW rad. by snow ! || ||
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) :: ZLEW_ROOF ! latent heat flux of snowfree roof ! || ||
REAL,DIMENSION(1) :: ZLESNOW_ROOF ! latent heat flux over snow ! || ||
REAL,DIMENSION(1) :: ZLEW_ROAD ! latent heat flux of snowfree road ! || ||
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) :: ZRN_TOWN ! net radiation over town ! || ||
REAL,DIMENSION(1) :: ZH_TOWN ! sensible heat flux over town ! || ||
REAL,DIMENSION(1) :: ZLE_TOWN ! latent heat flux over town ! || ||
REAL,DIMENSION(1) :: ZGFLUX_TOWN ! flux through the ground for town ! || ||
REAL,DIMENSION(1) :: ZEVAP_TOWN ! evaporation (kg/m2/s) ! || ||
! Atmospheric Forcing variables ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZTA ! air temperature forcing (K) ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZQA ! air humidity forcing (kg/m3) ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZWIND ! wind speed (m/s) ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZSCA_SW! diffuse solar radiation (on hor surf) ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZDIR_SW! direct solar radiation (on hor surf) ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZLW ! longwave radiation (on horizontal surf) ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZSNOW ! snow precipitation (kg/m2/s) ! || ||
REAL, DIMENSION(:,:), ALLOCATABLE :: ZRAIN ! liquid precipitation (kg/m2/s) !\\ //
REAL, DIMENSION(:,:), ALLOCATABLE :: ZPS ! pressure at forcing level (Pa) ! \\ //
REAL, DIMENSION(:,:), ALLOCATABLE :: ZCO2 ! CO2 concentration in the air (kg/m3) ! \\ //
REAL, DIMENSION(:,:), ALLOCATABLE :: ZDIR ! wind direction ! \\/
REAL, DIMENSION(1) :: ZCOEF ! work array !
REAL, DIMENSION(1) :: ZF1_o_B ! Coefficient for sky model ! || ||
REAL, DIMENSION(1,1):: ZTDIR_SW ! total direct SW ! || ||
REAL, DIMENSION(1,1):: ZTSCA_SW ! total diffuse SW ! || ||
REAL :: ZTIME_BEG ! Time at beginning of time step ! || ||
REAL :: ZTIME ! Time at end of time step ! || ||
! ----------------------------------------------------------- ! || ||
! Outputs ! || ||
! ----------------------------------------------------------- ! || ||
! ! || ||
CHARACTER(LEN=*), PARAMETER :: T_ROOF1 = 'output/T_ROOF1.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: T_CANYON = 'output/T_CANYON.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: T_ROAD1 = 'output/T_ROAD1.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: T_FLOOR1 = 'output/T_FLOOR1.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: T_MASS1 = 'output/T_MASS1.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: T_WALLA1= 'output/T_WALLA1.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: T_WALLB1= 'output/T_WALLB1.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: TI_BLD = 'output/TI_BLD.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: QI_BLD = 'output/QI_BLD.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: Q_CANYON = 'output/Q_CANYON.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: U_CANYON = 'output/U_CANYON.txt' ! || ||
CHARACTER(LEN=*), PARAMETER :: H_TOWN = 'output/H_TOWN.txt' !\\ //
CHARACTER(LEN=*), PARAMETER :: LE_TOWN = 'output/LE_TOWN.txt' ! \\ //
CHARACTER(LEN=*), PARAMETER :: RN_TOWN = 'output/RN_TOWN.txt' ! \\ //
CHARACTER(LEN=*), PARAMETER :: HVAC_COOL = 'output/HVAC_COOL.txt' ! \\/
CHARACTER(LEN=*), PARAMETER :: HVAC_HEAT = 'output/HVAC_HEAT.txt' !
CHARACTER(LEN=*), PARAMETER :: COP = 'output/COP.txt'
!
CHARACTER(LEN=*), PARAMETER :: DIR_CANYON = 'output/DIR_CANYON.txt'
CHARACTER(LEN=*), PARAMETER :: ALB_TOWN = 'output/ALB_TOWN.txt'
CHARACTER(LEN=*), PARAMETER :: EMIS_TOWN = 'output/EMIS_TOWN.txt'
CHARACTER(LEN=*), PARAMETER :: EVAP_TOWN = 'output/EVAP_TOWN.txt'
CHARACTER(LEN=*), PARAMETER :: GFLUX_TOWN = 'output/GFLUX_TOWN.txt'
CHARACTER(LEN=*), PARAMETER :: TS_TOWN = 'output/TS_TOWN.txt'
CHARACTER(LEN=*), PARAMETER :: Q_TOWN = 'output/Q_TOWN.txt'
CHARACTER(LEN=*), PARAMETER :: USTAR_TOWN = 'output/USTAR_TOWN.txt'
CHARACTER(LEN=*), PARAMETER :: THER_PROD_PANEL = 'output/THER_PROD_PANEL.txt'
CHARACTER(LEN=*), PARAMETER :: PHOT_PROD_PANEL = 'output/PHOT_PROD_PANEL.txt'
CHARACTER(LEN=*), PARAMETER :: QF_TOWN = 'output/QF_TOWN.txt'
CHARACTER(LEN=*), PARAMETER :: DQS_TOWN = 'output/DQS_TOWN.txt'
!
CHARACTER(LEN=*), PARAMETER :: SWD = 'output/SWD.txt'
CHARACTER(LEN=*), PARAMETER :: SWU = 'output/SWU.txt'
CHARACTER(LEN=*), PARAMETER :: LWD = 'output/LWD.txt'
CHARACTER(LEN=*), PARAMETER :: LWU = 'output/LWU.txt'
!
CHARACTER(LEN=*), PARAMETER :: Forc_TA = 'output/Forc_TA.txt'
CHARACTER(LEN=*), PARAMETER :: Forc_PS = 'output/Forc_PS.txt'
CHARACTER(LEN=*), PARAMETER :: Forc_QA = 'output/Forc_QA.txt'
CHARACTER(LEN=*), PARAMETER :: Forc_WIND = 'output/Forc_WIND.txt'
CHARACTER(LEN=*), PARAMETER :: Forc_RAIN = 'output/Forc_RAIN.txt'
CHARACTER(LEN=*), PARAMETER :: Forc_SNOW = 'output/Forc_SNOW.txt'
INTEGER :: ID_FORC
REAL, DIMENSION(1) :: ZSUMZEN
REAL, DIMENSION(1) :: ZSW
REAL :: ZBEGIN_TRAFFIC_TIME ! start traffic time (solar time, s)
REAL :: ZEND_TRAFFIC_TIME ! end traffic time (solar time, s)
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)
logical :: exist ! TODO: testing remove
LOGICAL :: NO_OUTPUT ! Whether to output results to file
!===========================================================================
! Read from namelist file after default values are set.
!===========================================================================
OPEN(UNIT=99, FILE='input.nml', STATUS='old')
READ(99, NML = dimensions)
ALLOCATE(ZHC_ROOF (1,NROOF_LAYER))
ALLOCATE(ZTC_ROOF (1,NROOF_LAYER))
ALLOCATE(ZD_ROOF (1,NROOF_LAYER))
ALLOCATE(ZT_ROOF (1,NROOF_LAYER))
ALLOCATE(ZHC_ROAD (1,NROAD_LAYER))
ALLOCATE(ZTC_ROAD (1,NROAD_LAYER))
ALLOCATE(ZD_ROAD (1,NROAD_LAYER))
ALLOCATE(ZT_ROAD (1,NROAD_LAYER))
ALLOCATE(ZHC_WALL (1,NWALL_LAYER))
ALLOCATE(ZTC_WALL (1,NWALL_LAYER))
ALLOCATE(ZD_WALL (1,NWALL_LAYER))
ALLOCATE(ZT_WALL (1,NWALL_LAYER))
ALLOCATE(ZT_WALL_B (1,NWALL_LAYER))
ALLOCATE(ZHC_FLOOR (1,NFLOOR_LAYER))
ALLOCATE(ZTC_FLOOR (1,NFLOOR_LAYER))
ALLOCATE(ZD_FLOOR (1,NFLOOR_LAYER))
ALLOCATE(ZT_FLOOR (1,NFLOOR_LAYER))
ALLOCATE(ZT_MASS (1,NFLOOR_LAYER))
READ(99, NML = parameters)
CLOSE(99)
!===========================================================================
!===========================================================================
!===========================================================================
!===========================================================================
!===========================================================================
!===========================================================================
! *** DO NOT CHANGE VALUES BELOW ***
!===========================================================================
!===========================================================================
!===========================================================================
!===========================================================================
!===========================================================================
!===========================================================================
! -----------------------------------------------------------
! Inizializations (SYSTEM)
! -----------------------------------------------------------
ZT_WALL_B = ZT_WALL ! wall layers temperatures
!
GSHAD_DAY = .FALSE. ! has shading been necessary this day ?
GNATVENT_NIGHT =.FALSE. ! has natural ventilation been necessary/possible this night ?
! irrigation not supported currently
LPAR_RD_IRRIG = .FALSE.
ZRD_START_MONTH = 6
ZRD_END_MONTH = 6
ZRD_START_HOUR = 6
ZRD_END_HOUR = 6
ZRD_24H_IRRIG = 0
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. ! is canopy active ? ** DO NOT CHANGE **
!
! initialization of physical constants
!
CALL INI_CSTS
!
!CALL INIT_SURFCONSPHY
!
CQSAT='NEW' ! saturation is computed relative to water above 0°C, and relative to ice below 0°C
!
!* various thresholds
!
XCISMIN = 0.5 ! minimum wind shear
XVMODMIN = 0.5 ! minimum wind speed
LALDTHRES = .FALSE. ! activate aladin threshold for wind
XRIMAX = 0.2 ! Maximum richardson number for exchange coefficients computations
!
!* Open atmospheric forcing files
!
CALL OPEN_CLOSE_BIN_ASC_FORC('OPEN ','ASCII ','R')
!
! allocation of variables
!
CALL OL_ALLOC_ATM(1,1,1) ! INI, IBANDS, ISCAL
!
ZTIME = ZTIME_START
!
! sun position at run start
!
CALL SUNPOS(IYEAR, IMONTH, IDAY, ZTIME, ZLON, ZLAT, XTSUN, XZENITH, XAZIM)
!
! allocate local atmospheric variables
ALLOCATE(ZTA (1,2))
ALLOCATE(ZQA (1,2))
ALLOCATE(ZWIND (1,2))
ALLOCATE(ZDIR_SW(1,2))
ALLOCATE(ZSCA_SW(1,2))
ALLOCATE(ZLW (1,2))
ALLOCATE(ZSNOW (1,2))
ALLOCATE(ZRAIN (1,2))
ALLOCATE(ZPS (1,2))
ALLOCATE(ZCO2 (1,2))
ALLOCATE(ZDIR (1,2))
!
!* reads atmospheric forcing for first time-step
!
CALL OL_READ_ATM('ASCII ', 'ASCII ', 1, &
ZTA,ZQA,ZWIND,ZDIR_SW,ZSCA_SW,ZLW,ZSNOW,ZRAIN,ZPS,&
ZCO2,ZDIR,.false. )
XCO2(:) = ZCO2(:,1)
XRHOA(:) = ZPS(:,1) / ( ZTA(:,1)*XRD * ( 1.+((XRV/XRD)-1.)*ZQA(:,1) ) + XZREF(:)*XG )
!
! -----------------------------------------------------------
! Geometric parameters
! -----------------------------------------------------------
!
ZROAD = (1. - ZBLD - ZGARDEN)
XZREF = ZZREF
XUREF = ZZREF
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)
!
! -----------------------------------------------------------
! Default at first time-step : no snow
! -----------------------------------------------------------
!
ZWSNOW_ROOF = 0.
ZTSNOW_ROOF = XUNDEF
ZRSNOW_ROOF = XUNDEF
ZASNOW_ROOF = XUNDEF
ZESNOW_ROOF = XUNDEF
ZTSSNOW_ROOF= XUNDEF
ZWSNOW_ROAD = 0.
ZTSNOW_ROAD = XUNDEF
ZRSNOW_ROAD = XUNDEF
ZASNOW_ROAD = XUNDEF
ZESNOW_ROAD = XUNDEF
ZTSSNOW_ROAD= XUNDEF
! -----------------------------------------------------------
! Outputs
! -----------------------------------------------------------
!
IF (.NOT. NO_OUTPUT) THEN
OPEN(UNIT=13, FILE = T_ROOF1, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=14, FILE = T_CANYON, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=15, FILE = T_ROAD1, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=16, FILE = T_WALLA1, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=17, FILE = T_WALLB1, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=18, FILE = TI_BLD, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=19, FILE = Q_CANYON, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=21, FILE = U_CANYON, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=22, FILE = H_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=23, FILE = LE_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=24, FILE = RN_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=25, FILE = HVAC_COOL, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=26, FILE = HVAC_HEAT, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=37, FILE = COP, ACCESS = 'APPEND',STATUS = 'REPLACE')
!
OPEN(UNIT=27, FILE = DIR_CANYON, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=28, FILE = ALB_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=29, FILE = EMIS_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=30, FILE = EVAP_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=31, FILE = GFLUX_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=32, FILE = TS_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=33, FILE = Q_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=34, FILE = USTAR_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=35, FILE = THER_PROD_PANEL, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=36, FILE = PHOT_PROD_PANEL, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=38, FILE = QF_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=39, FILE = DQS_TOWN, ACCESS = 'APPEND',STATUS = 'REPLACE')
!
OPEN(UNIT=40, FILE = SWD, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=41, FILE = SWU, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=42, FILE = LWD, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=43, FILE = LWU, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=50, FILE = Forc_TA, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=51, FILE = Forc_PS, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=52, FILE = Forc_QA, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=53, FILE = Forc_WIND, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=54, FILE = Forc_RAIN, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=55, FILE = Forc_SNOW, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=56, FILE = T_FLOOR1, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=57, FILE = T_MASS1, ACCESS = 'APPEND',STATUS = 'REPLACE')
OPEN(UNIT=58, FILE = QI_BLD, ACCESS = 'APPEND',STATUS = 'REPLACE')
END IF
!
! -----------------------------------------------------------
! Temporal loops
! -----------------------------------------------------------
!
DO JFORC_STEP= 1,INB_STEP_ATM
WRITE(*,FMT='(I5,A1,I5)') JFORC_STEP,'/',INB_STEP_ATM
!
ZTS_ROOF = 0.
ZTS_ROAD = 0.
ZTS_WALL_A = 0.
ZTS_WALL_B = 0.
! read Forcing
CALL OL_READ_ATM('ASCII ', 'ASCII ', JFORC_STEP, &
ZTA,ZQA,ZWIND,ZDIR_SW,ZSCA_SW,ZLW,ZSNOW,ZRAIN,ZPS,&
ZCO2,ZDIR,.false. )
!
!COMPUTE SUM ZENITH angle between 2 timestepA
ZSUMZEN(:)=0.0
DO JSURF_STEP = 1,INB_ATM
IDAY2 = IDAY
ZTIME2 = ZTIME + (JSURF_STEP-1.)*XTSTEP_SURF
IF (ZTIME2>86400.) THEN
ZTIME2 = ZTIME2-86400
IDAY2 = IDAY+1
ENDIF
CALL SUNPOS(IYEAR, IMONTH, IDAY2, ZTIME+(JSURF_STEP-1.)*XTSTEP_SURF, &
ZLON, ZLAT, XTSUN, XZENITH, XAZIM)
!
ZSUMZEN(:)= ZSUMZEN(:) + MAX(COS(XZENITH(:)+0.1),0.)/(INB_ATM*1.0)
!
ENDDO
WHERE ( ZSUMZEN<0.01 ) ZSUMZEN = 0.0
!
DO JSURF_STEP=1,INB_ATM
!
! time interpolation of the forcing
!
!
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
!
!interpolation between beginning and end of current forcing time step
ID_FORC = 1
CALL OL_TIME_INTERP_ATM(JSURF_STEP,INB_ATM, &
ZTA(:,ID_FORC),ZTA(:,ID_FORC+1), &
ZQA(:,ID_FORC),ZQA(:,ID_FORC+1), &
ZWIND(:,ID_FORC),ZWIND(:,ID_FORC+1), &
ZDIR_SW(:,ID_FORC),ZDIR_SW(:,ID_FORC+1), &
ZSCA_SW(:,ID_FORC),ZSCA_SW(:,ID_FORC+1), &
ZLW(:,ID_FORC),ZLW(:,ID_FORC+1), &
ZSNOW(:,ID_FORC+1),ZRAIN(:,ID_FORC+1), &
ZPS(:,ID_FORC),ZPS(:,ID_FORC+1), &
ZCO2(:,ID_FORC),ZCO2(:,ID_FORC+1), &
ZDIR(:,ID_FORC),ZDIR(:,ID_FORC+1), &
XZENITH+0.1,ZSUMZEN )
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
! updates time
ZTIMEC= ZTIMEC+XTSTEP_SURF
! Exner functions
!
ZEXNS = (XPS/XP00)**(XRD/XCPD)
ZEXNA = (XPA/XP00)**(XRD/XCPD)
!
! specific humidity (conversion from kg/m3 to kg/kg)
!
ZQA_KGKG(:) = XQA(:) / XRHOA(:)
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 = SQRT(XU**2+XV**2)
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 of physical routines of TEB is here !
!*****************************************************************************
!*****************************************************************************
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, 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 )
!*****************************************************************************
!*****************************************************************************
!*****************************************************************************
!*****************************************************************************
!
ZTIME = ZTIME + XTSTEP_SURF
CALL ADD_FORECAST_TO_DATE_SURF(IYEAR, IMONTH, IDAY, ZTIME)
END DO
IF (.NOT. NO_OUTPUT) THEN
! Instantaneous diagnostics
ZTS_ROOF = ZT_ROOF(1,1)
ZTS_ROAD = ZT_ROAD(1,1)
ZTS_WALL_A = ZT_WALL(1,1)
ZTS_WALL_B = ZT_WALL_B(1,1)
! Calucalte the total (direct + diffuse radiaitons)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 no modify the wind direction
ZDIR_CANYON = ZDIR(1,1)
! Town specific humidity assumed to be same as canyon humidity
ZQ_TOWN = ZQ_CANYON
!
WRITE(13,*) ZTS_ROOF
WRITE(14,*) ZT_CANYON
WRITE(15,*) ZTS_ROAD
WRITE(16,*) ZTS_WALL_A
WRITE(17,*) ZTS_WALL_B
WRITE(18,*) ZTI_BLD
WRITE(19,*) ZQ_CANYON
WRITE(21,*) ZU_CANYON
WRITE(22,*) ZH_TOWN
WRITE(23,*) ZLE_TOWN
WRITE(24,*) ZRN_TOWN
IF (CBEM=='BEM') THEN
! The heating and cooling energy demand are converted
! from W/m²(bld) to W/m²(urb).
! FIXME: this does not seem correct anymore, why?
! it seems that ZHVAC_COOL is already W/m²(urb)...
ZHVAC_COOL_TOT = ZBLD * ZHVAC_COOL
ZHVAC_HEAT_TOT = ZBLD * ZHVAC_HEAT
WRITE(25,*) ZHVAC_COOL
WRITE(26,*) ZHVAC_HEAT
WRITE(37,*) ZCOP
END IF
!
WRITE(27,*) ZDIR_CANYON
WRITE(28,*) ZALB_TOWN
WRITE(29,*) ZEMIS_TOWN
WRITE(30,*) ZEVAP_TOWN
WRITE(31,*) ZGFLUX_TOWN
WRITE(32,*) ZTS_TOWN
WRITE(33,*) ZQ_TOWN
WRITE(34,*) ZUSTAR_TOWN
WRITE(38,*) ZQF_TOWN
WRITE(39,*) ZDQS_TOWN
IF (LSOLAR_PANEL) THEN
WRITE(35,*) ZTHER_PROD_PANEL
WRITE(36,*) ZPHOT_PROD_PANEL
END IF
WRITE(40,*) ZTDIR_SW(1,1) + ZTSCA_SW(1,1)
! PDIR_SW(:,JSWB) + PSCA_SW(:,JSWB)
WRITE(41,*) ZTDIR_SW(1,1) * ZDIR_ALB_TOWN(1) + ZTSCA_SW(1,1) * ZSCA_ALB_TOWN(1)
! PDIR_SW(:,JSWB) * PDIR_ALB(:,JSWB) + PSCA_SW(:,JSWB) * PSCA_ALB(:,JSWB)
WRITE(42,*) XLW
! PLW(:)
WRITE(43,*) ZEMIS_TOWN * XSTEFAN *ZTS_TOWN**4 + (1.-ZEMIS_TOWN)*XLW
! PEMIS(:)*XSTEFAN*PTRAD(:)**4 + (1.-PEMIS(:))*PLW(:)
! Interpolated forcing variables
WRITE(50,*) XTA
WRITE(51,*) XPS
WRITE(52,*) XQA
WRITE(53,*) ZVMOD
WRITE(54,*) XRAIN
WRITE(55,*) XSNOW
WRITE(56,*) ZT_FLOOR(1,1)
WRITE(57,*) ZT_MASS(1,1)
WRITE(58,*) ZQI_BLD
END IF
!
END DO
!
! --------------------------------------------------------------------------------------
!
!
! DEALLOCATE variables
DEALLOCATE(ZTA)
DEALLOCATE(ZQA)
DEALLOCATE(ZWIND)
DEALLOCATE(ZDIR_SW)
DEALLOCATE(ZSCA_SW)
DEALLOCATE(ZLW)
DEALLOCATE(ZSNOW)
DEALLOCATE(ZRAIN)
DEALLOCATE(ZPS)
DEALLOCATE(ZCO2)
DEALLOCATE(ZDIR)
!
DEALLOCATE(ZHC_WALL)
DEALLOCATE(ZTC_WALL)
DEALLOCATE(ZD_WALL)
DEALLOCATE(ZT_WALL)
DEALLOCATE(ZT_WALL_B)
DEALLOCATE(ZHC_ROOF)
DEALLOCATE(ZTC_ROOF)
DEALLOCATE(ZD_ROOF)
DEALLOCATE(ZT_ROOF)
DEALLOCATE(ZHC_ROAD)
DEALLOCATE(ZTC_ROAD)
DEALLOCATE(ZD_ROAD)
DEALLOCATE(ZT_ROAD)
!
CALL OPEN_CLOSE_BIN_ASC_FORC('CLOSE ','ASCII ','R')
!
IF (.NOT. NO_OUTPUT) THEN
CLOSE(13)
CLOSE(14)
CLOSE(15)
CLOSE(16)
CLOSE(17)
CLOSE(18)
CLOSE(19)
CLOSE(21)
CLOSE(22)
CLOSE(23)
CLOSE(24)
CLOSE(25)
CLOSE(26)
CLOSE(37)
CLOSE(27)
CLOSE(28)
CLOSE(29)
CLOSE(30)
CLOSE(31)
CLOSE(32)
CLOSE(33)
CLOSE(34)
CLOSE(35)
CLOSE(36)
CLOSE(38)
CLOSE(39)
CLOSE(40)
CLOSE(41)
CLOSE(42)
CLOSE(43)
CLOSE(50)
CLOSE(51)
CLOSE(52)
CLOSE(53)
CLOSE(54)
CLOSE(55)
CLOSE(56)
CLOSE(57)
CLOSE(58)
!
WRITE(*,*) ' '
WRITE(*,*) ' --------------------------'
WRITE(*,*) ' | DRIVER ENDS CORRECTLY |'
WRITE(*,*) ' --------------------------'
WRITE(*,*) ' '
END IF
!
! --------------------------------------------------------------------------------------
!
END PROGRAM DRIVER