SURFEX v7.3
General documentation of Surfex
|
00001 ! ########################################################################## 00002 SUBROUTINE BEM(PTSTEP, PTIME, HCOOL_COIL, HHEAT_COIL, & 00003 OAUTOSIZE, KDAY, HNATVENT, & 00004 PPS, PRHOA, PT_CANYON, PQ_CANYON, PU_CANYON, & 00005 PT_ROOF, PT_WALL_A, PT_WALL_B, PBLD, PBLD_HEIGHT, PWALL_O_HOR,& 00006 PHC_FLOOR, PTC_FLOOR, PD_FLOOR, & 00007 PT_WIN2, PGR, PQIN, PQIN_FRAD, PQIN_FLAT, & 00008 PEFF_HEAT, PINF, PTCOOL_TARGET, PTHEAT_TARGET, PHR_TARGET, & 00009 PF_WATER_COND, PV_VENT, PCAP_SYS_HEAT, PT_ADP, PCOP_RAT, & 00010 PAUX_MAX, PT_FLOOR, PT_MASS, PTI_BLD, PQI_BLD, & 00011 PCAP_SYS_RAT, PM_SYS_RAT, ONATVENT_NIGHT, & 00012 PH_BLD_COOL, PH_BLD_HEAT, PLE_BLD_COOL, PLE_BLD_HEAT, & 00013 PT_BLD_COOL, PHVAC_COOL, PT_SYS, PQ_SYS, PH_WASTE, PLE_WASTE, & 00014 PFAN_POWER, PHVAC_HEAT, PM_SYS, PCOP, PCAP_SYS, PHU_BLD, & 00015 PTR_SW_WIN, PT_RAD_IND, PFLX_BLD_FLOOR, PFLX_BLD_MASS, & 00016 PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, & 00017 PRADHT_IN, PN_FLOOR, PWALL_O_BLD, PGLAZ_O_BLD, PMASS_O_BLD, & 00018 PFLOOR_HW_RATIO, PF_FLOOR_ROOF, PF_MASS_FLOOR, PF_MASS_WALL, & 00019 PF_MASS_WIN, PRAD_ROOF_MASS, PRAD_ROOF_FLOOR, PRAD_WALL_MASS, & 00020 PRAD_WALL_FLOOR, PRAD_WIN_MASS, PRAD_WIN_FLOOR, & 00021 PCONV_ROOF_BLD, PCONV_WALL_BLD, PCONV_WIN_BLD, & 00022 PLOAD_IN_FLOOR, PLOAD_IN_MASS ) 00023 ! ########################################################################## 00024 ! 00025 !!**** *BEM* 00026 !! 00027 !! PURPOSE 00028 !! ------- 00029 ! 00030 ! Computes the temperature and humidity evolution of indoor air, 00031 ! building energy demand, HVAC energy consumption, 00032 ! waste heat from HVAC systems, and heat fluxes from indoor to building surfaces. 00033 ! 00034 ! 00035 !!** METHOD 00036 ! ------ 00037 ! 00038 ! NOMENCLATURE: bld - refers to building plant area; 00039 ! floor- refers to building plant area multiplied 00040 ! by the number of floors; 00041 ! wall - refers to wall area (excluding windows). 00042 ! win - refers to window area. 00043 ! mass - refers to internal mass area. 00044 ! 00045 ! 00046 ! solar radiation transmitted through windows 00047 ! ******************************************* 00048 ! 00049 ! Qsol_tr_win = Qsol_facade * tr_win * GR 00050 ! 00051 ! 00052 ! indoor wall conv/rad heat transfer coefficients 00053 ! *********************************************** 00054 ! 00055 ! The calculation of CHTC accounts for favorable or unfavorable convection 00056 ! depending on the relative position between the hot layer and cold layer 00057 ! 00058 ! 00059 ! building energy demand 00060 ! ********************** 00061 ! 00062 ! Calculation of the cooling and heating, sensible and latent building energy demand. 00063 ! The sensible demand includes the convective heat transfer from indoor surfaces, the 00064 ! convective fraction of internal heat gains, and sensible infiltration/ventilation heat 00065 ! gains. The latent demand includes the latent fraction of internal heat gains and latent 00066 ! infiltration/ventilation heat gains. 00067 ! 00068 ! surface areas and volummes (referred to m2_bld) 00069 ! *********************************************** 00070 ! 00071 ! Awall = WALL_O_HOR * (1 - GR) / BLD [m2_wall/m2_bld] 00072 ! Awin = WALL_O_HOR * GR / BLD [m2_win/m2_bld] 00073 ! Amass = 2 * N_FLOOR [m2_mass/m2_bld] 00074 ! N_FLOOR = BLD_HEIGHT / FLOOR_HEIGHT [#] 00075 ! Aroof = 1 [m2_roof/m2_bld] 00076 ! Afloor = 1 [m2_floor/m2_bld] 00077 ! Vol_air = BLD_HEIGHT [m3_bld/m2_bld] 00078 ! 00079 ! 00080 ! evolution of the internal temperature 00081 ! ************************************* 00082 ! 00083 00084 ! dTin 00085 ! Vol_air * ro_air * cp_air * ---- = h_wall * Awall * (Twall - Tin) 00086 ! dt + h_roof * Aroof * (Troof -Tin) 00087 ! + h_floor * Afloor *(Tfloor - Tin) 00088 ! + h_mass * Amass * (Tmass - Tin) 00089 ! + h_win * Awin * (Twin - Tin) 00090 ! + Qig * (1 - fig_rad) * (1-fig_lat) 00091 ! + Vinf * ro_air * cp_air * (Tout - Tin) 00092 ! + Vsys * ro_air * cp_air * (Tsys - Tin) 00093 ! 00094 ! 00095 ! evolution of the internal specific humidity 00096 ! ******************************************* 00097 ! 00098 ! dQin 00099 ! Vol_air * ro_air * lv_air * ---- = Qig * fig_lat 00100 ! dt + Vinf * ro_air * lv_air * (Qout - Qin) 00101 ! + Vsys * ro_air * lv_air * (Qsys - Qin) 00102 ! 00103 ! 00104 ! heat fluxes from indoor to surfaces 00105 ! *********************************** 00106 ! 00107 ! Qin_wall = h_wall * (Tin - Twall) [W/m2_wall] 00108 ! Qin_roof = h_roof * (Tin - Troof) [W/m2_roof] 00109 ! Qin_floor = h_floor * (Tin - Tfloor) [W/m2_floor] 00110 ! Qin_mass = h_wall * (Tin - Tmass) 00111 ! + Qig * fig_rad * (1-fig_lat)/ 2 00112 ! + Qsol_tr_win [W/m2_mass] 00113 ! 00114 ! 00115 ! energy consumption and waste heat from cooling system 00116 ! ***************************************************** 00117 ! 00118 ! Qhvac = Qbld / COP 00119 ! Qwaste = Qbld + Qhvac 00120 ! 00121 ! 00122 ! energy consumption and waste heat from heating system 00123 ! ***************************************************** 00124 ! 00125 ! Qhvac = Qbld / Eff 00126 ! Qwaste = Qhvac - Qbld 00127 ! 00128 ! 00129 !! EXTERNAL 00130 !! -------- 00131 !! 00132 !! 00133 !! IMPLICIT ARGUMENTS 00134 !! ------------------ 00135 !! 00136 !! 00137 !! REFERENCE 00138 !! --------- 00139 !! 00140 !! 00141 !! AUTHOR 00142 !! ------ 00143 !! 00144 !! B. Bueno * Meteo-France * 00145 !! 00146 !!! MODIFICATIONS 00147 !! ------------- 00148 !! Original 2010 00149 !! G. Pigeon nov. 2011: inclusion floor/mass budget inside 00150 !! add automatic/manual ventilation 00151 !! conserve exchanges with the different surfaces inside 1 time step 00152 !! G. Pigeon sept. 2012: use of TARP/DOE coef for indoor convection 00153 !! use of both PT_WALL_A and PT_WALL_B for calculations 00154 !! the internal mass depth is 1/2 of the floor depth 00155 !! add the option of no atmospheric heat releases by HVAC system (PF_WATER_COND < 0) 00156 !! G. Pigeon oct. 2012: use indoor air density + new solar heat gain distribution 00157 !------------------------------------------------------------------------------- 00158 ! 00159 !* 0. DECLARATIONS 00160 ! ------------ 00161 ! 00162 USE MODD_CSTS,ONLY : XCPD,XSTEFAN,XLVTT,XG, XRV, XRD 00163 00164 USE MODE_THERMOS 00165 USE MODE_PSYCHRO 00166 USE MODI_DX_AIR_COOLING_COIL_CV 00167 USE MODI_FLOOR_LAYER_E_BUDGET 00168 USE MODI_MASS_LAYER_E_BUDGET 00169 USE MODE_CONV_DOE 00170 ! 00171 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00172 USE PARKIND1 ,ONLY : JPRB 00173 ! 00174 IMPLICIT NONE 00175 ! 00176 !* 0.1 Declarations of arguments 00177 ! 00178 ! 00179 REAL, INTENT(IN) :: PTSTEP ! Time step 00180 REAL, INTENT(IN) :: PTIME ! current time since midnight (UTC, s) 00181 CHARACTER(LEN=6), INTENT(IN) :: HCOOL_COIL ! type of cooling system IDEAL/DX_COOL 00182 CHARACTER(LEN=6), INTENT(IN) :: HHEAT_COIL ! type of heating system IDEAL/FIN_CAP 00183 LOGICAL, INTENT(IN) :: OAUTOSIZE ! Flag to activate autosize calculations 00184 INTEGER, INTENT(IN) :: KDAY ! Simulation day 00185 ! 00186 CHARACTER(LEN=4), DIMENSION(:), INTENT(IN) :: HNATVENT 00187 ! 00188 REAL, DIMENSION(:), INTENT(IN) :: PPS ! Canyon air pressure [Pa] 00189 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! Air density at the lowest level [kg m-3] 00190 REAL, DIMENSION(:), INTENT(IN) :: PT_CANYON ! Canyon air temperature [K] 00191 REAL, DIMENSION(:), INTENT(IN) :: PQ_CANYON ! Canyon air specific humidity [kg kg-1] 00192 REAL, DIMENSION(:), INTENT(IN) :: PU_CANYON ! Canyon wind speed (m s-1) 00193 REAL, DIMENSION(:,:), INTENT(IN) :: PT_ROOF ! Roof layers temperatures [K] 00194 REAL, DIMENSION(:,:), INTENT(IN) :: PT_WALL_A ! Wall A layers temperatures [K] 00195 REAL, DIMENSION(:,:), INTENT(IN) :: PT_WALL_B ! Wall B layers temperatures [K] 00196 ! 00197 REAL, DIMENSION(:), INTENT(IN) :: PBLD ! Urban horizontal building density 00198 REAL, DIMENSION(:), INTENT(IN) :: PBLD_HEIGHT ! Average building height [m] 00199 REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_HOR ! Wall to horizontal surface ratio 00200 ! 00201 REAL, DIMENSION(:,:), INTENT(IN) :: PHC_FLOOR ! heat capacity for road layers 00202 REAL, DIMENSION(:,:), INTENT(IN) :: PTC_FLOOR ! thermal conductivity for 00203 ! road layers 00204 REAL, DIMENSION(:,:), INTENT(IN) :: PD_FLOOR ! depth of road layers 00205 ! 00206 REAL, DIMENSION(:), INTENT(IN) :: PT_WIN2 ! Indoor window temperature [K] 00207 REAL, DIMENSION(:), INTENT(IN) :: PGR ! Glazing ratio 00208 REAL, DIMENSION(:), INTENT(IN) :: PQIN ! Internal heat gains [W m-2(floor)] 00209 REAL, DIMENSION(:), INTENT(IN) :: PQIN_FRAD ! Radiant fraction of internal heat gains 00210 REAL, DIMENSION(:), INTENT(IN) :: PQIN_FLAT ! Latent franction of internal heat gains 00211 REAL, DIMENSION(:), INTENT(IN) :: PEFF_HEAT ! Efficiency of the heating system 00212 REAL, DIMENSION(:), INTENT(IN) :: PINF ! Infiltration flow rate [AC/H] 00213 REAL, DIMENSION(:), INTENT(IN) :: PTCOOL_TARGET ! Cooling setpoint of HVAC system [K] 00214 REAL, DIMENSION(:), INTENT(IN) :: PTHEAT_TARGET ! Heating setpoint of HVAC system [K] 00215 REAL, DIMENSION(:), INTENT(IN) :: PHR_TARGET ! Relative humidity setpoint 00216 REAL,DIMENSION(:), INTENT(IN) :: PF_WATER_COND !fraction of evaporation for the condensers 00217 REAL, DIMENSION(:), INTENT(IN) :: PV_VENT ! Ventilation flow rate [AC/H] 00218 REAL, DIMENSION(:), INTENT(IN) :: PCAP_SYS_HEAT ! Capacity of the heating system 00219 ! [W m-2(bld)] 00220 REAL, DIMENSION(:), INTENT(IN) :: PT_ADP ! Apparatus dewpoint temperature of the 00221 ! cooling coil [K] 00222 REAL, DIMENSION(:), INTENT(IN) :: PCOP_RAT ! Rated COP of the cooling system 00223 ! 00224 REAL, DIMENSION(:), INTENT(INOUT):: PAUX_MAX ! Auxiliar variable for autosize calcs 00225 REAL, DIMENSION(:,:), INTENT(INOUT):: PT_FLOOR ! Floor layers temperatures [K] 00226 REAL, DIMENSION(:,:), INTENT(INOUT):: PT_MASS ! Internal mass layers temperatures [K] 00227 REAL, DIMENSION(:), INTENT(INOUT):: PTI_BLD ! Indoor air temperature [K] 00228 REAL, DIMENSION(:), INTENT(INOUT):: PQI_BLD ! Indoor air specific humidity [kg kg-1] 00229 00230 REAL, DIMENSION(:), INTENT(INOUT):: PCAP_SYS_RAT ! Rated capacity of the cooling system 00231 ! [W m-2(bld)] 00232 REAL, DIMENSION(:), INTENT(INOUT):: PM_SYS_RAT ! Rated HVAC mass flow rate 00233 ! [kg s-1 m-2(bld)] 00234 LOGICAL, DIMENSION(:),INTENT(INOUT):: ONATVENT_NIGHT ! has natural ventilation 00235 ! been necessary/possible during the night 00236 ! 00237 REAL, DIMENSION(:), INTENT(OUT) :: PH_BLD_COOL ! Sensible cooling energy demand 00238 ! of the building [W m-2(bld)] 00239 REAL, DIMENSION(:), INTENT(OUT) :: PH_BLD_HEAT ! Heating energy demand 00240 ! of the building [W m-2(bld)] 00241 REAL, DIMENSION(:), INTENT(OUT) :: PLE_BLD_COOL ! Latent cooling energy demand 00242 ! of the building [W m-2(bld)] 00243 REAL, DIMENSION(:), INTENT(OUT) :: PLE_BLD_HEAT ! Latent heating energy demand 00244 ! of the building [W m-2(bld)] 00245 REAL, DIMENSION(:), INTENT(OUT) :: PT_BLD_COOL ! Total cooling energy demand 00246 ! of the building [W m-2(bld)] 00247 REAL, DIMENSION(:), INTENT(OUT) :: PHVAC_COOL ! Energy consumption of the cooling system 00248 ! [W m-2(bld)] 00249 REAL, DIMENSION(:), INTENT(OUT) :: PT_SYS ! Supply air temperature [K] 00250 REAL, DIMENSION(:), INTENT(OUT) :: PQ_SYS ! Supply air specific humidity [kg kg-1] 00251 REAL, DIMENSION(:), INTENT(OUT) :: PH_WASTE ! Sensible waste heat from HVAC system 00252 ! [W m-2(bld)] 00253 REAL, DIMENSION(:), INTENT(OUT) :: PLE_WASTE ! Latent waste heat from HVAC system 00254 ! [W m-2(bld)] 00255 REAL, DIMENSION(:), INTENT(OUT) :: PFAN_POWER ! HVAC fan power 00256 REAL, DIMENSION(:), INTENT(OUT) :: PHVAC_HEAT ! Energy consumption of the heating system 00257 ! [W m-2(bld)] 00258 ! 00259 REAL, DIMENSION(:), INTENT(OUT) :: PM_SYS ! Actual HVAC mass flow rate 00260 ! [kg s-1 m-2(bld)] 00261 REAL, DIMENSION(:), INTENT(OUT) :: PCOP ! COP of the cooling system 00262 REAL, DIMENSION(:), INTENT(OUT) :: PCAP_SYS ! Actual capacity of the cooling system 00263 ! [W m-2(bld)] 00264 ! 00265 REAL, DIMENSION(:), INTENT(OUT) :: PHU_BLD ! Indoor relative humidity 0 < (-) < 1 00266 REAL, DIMENSION(:), INTENT(IN) :: PTR_SW_WIN ! Solar radiation transmitted throught 00267 ! windows [W m-2(bld)] 00268 REAL, DIMENSION(:), INTENT(IN) :: PT_RAD_IND ! Indoor mean radiant temperature [K] 00269 ! 00270 REAL, DIMENSION(:), INTENT(OUT) :: PFLX_BLD_FLOOR! Heat flux from indoor air to floor 00271 ! [W m-2(bld)] 00272 REAL, DIMENSION(:), INTENT(OUT) :: PFLX_BLD_MASS ! Heat flux from indoor air to mass 00273 ! [W m-2(bld)] 00274 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_MASS ! View factor floor-mass 00275 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_WALL ! View factor floor-wall 00276 REAL, DIMENSION(:), INTENT(IN) :: PF_FLOOR_WIN ! View factor floor-window 00277 REAL, DIMENSION(:), INTENT(IN) :: PRADHT_IN ! Indoor radiant heat transfer coefficient 00278 ! [W K-1 m-2] 00279 REAL, DIMENSION(:) , INTENT(IN) :: PN_FLOOR ! Number of floors 00280 REAL, DIMENSION(:) , INTENT(IN) :: PWALL_O_BLD ! Wall area [m2_wall/m2_bld] 00281 REAL, DIMENSION(:) , INTENT(IN) :: PGLAZ_O_BLD ! Window area [m2_win/m2_bld] 00282 REAL, DIMENSION(:) , INTENT(IN) :: PMASS_O_BLD ! Mass area [m2_mass/m2_bld] 00283 REAL, DIMENSION(:) , INTENT(IN) :: PFLOOR_HW_RATIO ! H/W ratio of 1 floor level 00284 REAL, DIMENSION(:) , INTENT(IN) :: PF_FLOOR_ROOF ! View factor floor-roof 00285 REAL, DIMENSION(:) , INTENT(IN) :: PF_MASS_FLOOR ! View factor mass-floor 00286 REAL, DIMENSION(:) , INTENT(IN) :: PF_MASS_WALL ! View factor mass-wall 00287 REAL, DIMENSION(:) , INTENT(IN) :: PF_MASS_WIN ! View factor mass-window 00288 REAL, DIMENSION(:) , INTENT(IN) :: PRAD_ROOF_MASS ! Rad. fluxes between roof and mass 00289 REAL, DIMENSION(:) , INTENT(IN) :: PRAD_ROOF_FLOOR ! Rad. fluxes between roof and floor 00290 REAL, DIMENSION(:) , INTENT(IN) :: PRAD_WALL_MASS ! Rad. fluxes between wall and mass 00291 REAL, DIMENSION(:) , INTENT(IN) :: PRAD_WALL_FLOOR ! Rad. fluxes between wall and floor 00292 REAL, DIMENSION(:) , INTENT(IN) :: PRAD_WIN_MASS ! Rad. fluxes between wind. and mass 00293 REAL, DIMENSION(:) , INTENT(IN) :: PRAD_WIN_FLOOR ! Rad. fluxes between wind. and floor 00294 REAL, DIMENSION(:) , INTENT(IN) :: PCONV_ROOF_BLD ! Conv. fluxes between roof and indoor air 00295 REAL, DIMENSION(:) , INTENT(IN) :: PCONV_WALL_BLD ! Conv. fluxes between wall and indoor air 00296 REAL, DIMENSION(:) , INTENT(IN) :: PCONV_WIN_BLD ! Conv. fluxes between wind. and indoor air 00297 REAL, DIMENSION(:) , INTENT(IN) :: PLOAD_IN_FLOOR ! solar + int heat gain on floor W/m² [floor] 00298 REAL, DIMENSION(:) , INTENT(IN) :: PLOAD_IN_MASS ! solar + int heat gain on floor W/m² [mass] 00299 ! 00300 !* 0.2 Declarations of local variables 00301 ! 00302 INTEGER :: IROOF ! Number of roof layers 00303 INTEGER :: IWALL ! Number of wall layers 00304 !REAL :: ZTCOMF_MAX ! Maximum comfort temperature for nat.vent [K] 00305 ! 00306 REAL, DIMENSION(SIZE(PTI_BLD)) :: ZFAN_AP ! Fan design pressure increase [Pa] 00307 REAL, DIMENSION(SIZE(PTI_BLD)) :: ZFAN_EFF ! Fan total efficiency 00308 ! 00309 LOGICAL, DIMENSION(SIZE(PTI_BLD)):: GSCHED ! Day-night schedule flag 00310 ! *to be transported to inputs* 00311 ! 00312 REAL, DIMENSION(SIZE(PTI_BLD)) :: ZF_NIGHT ! Reduction factor of int.gains at night 00313 REAL, DIMENSION(SIZE(PTI_BLD)) :: ZF_DAY ! Amplification factor of int.gains at daytime 00314 ! 00315 REAL, DIMENSION(SIZE(PTI_BLD)):: ZAC_IN_MASS_COOL, ZAC_IN_FLOOR_COOL, 00316 ZAC_IN_ROOF_COOL, ZAC_IN_WALL_A_COOL, 00317 ZAC_IN_WALL_B_COOL, ZAC_IN_WIN_COOL 00318 REAL, DIMENSION(SIZE(PTI_BLD)):: ZAC_IN_MASS_HEAT, ZAC_IN_FLOOR_HEAT, 00319 ZAC_IN_ROOF_HEAT, ZAC_IN_WALL_A_HEAT, 00320 ZAC_IN_WALL_B_HEAT, ZAC_IN_WIN_HEAT 00321 ! 00322 REAL, DIMENSION(SIZE(PTI_BLD)):: ZQIN ! Internal heat gains [W m-2(bld)] 00323 ! 00324 REAL, DIMENSION(SIZE(PTI_BLD)):: ZV_VENT ! Ventilation flow rate [m3 s-1 m-2(bld)] 00325 REAL, DIMENSION(SIZE(PTI_BLD)):: ZINF ! Infiltration flow rate [m3 s-1 m-2(bld)] 00326 ! 00327 LOGICAL, DIMENSION(SIZE(PTI_BLD)):: GNAT_VENT ! Is Natural ventilation active ? 00328 REAL, DIMENSION(SIZE(PTI_BLD)):: ZNAT_VENT ! Nat.vent airflow rate [m3 s-1 m-2(bld)] 00329 REAL,DIMENSION(SIZE(PTI_BLD)) :: ZTI_BLD ! Indoor air temperature at time step t + dt [K] 00330 REAL,DIMENSION(SIZE(PTI_BLD)) :: ZTI_BLD_OPEN ! Indoor air temperature if windows opened 00331 REAL,DIMENSION(SIZE(PTI_BLD)) :: ZTI_BLD_CLOSED! Indoor air temperature if windows closed 00332 ! 00333 REAL, DIMENSION(SIZE(PTI_BLD)):: ZQCOOL_TARGET ! Specific humidity cooling setpoing [kg kg-1] 00334 REAL, DIMENSION(SIZE(PTI_BLD)):: ZQHEAT_TARGET ! Specific humidity heating setpoing [kg kg-1] 00335 ! 00336 REAL, DIMENSION(SIZE(PTI_BLD)):: ZSHR ! Rated sensible heat rate 00337 REAL, DIMENSION(SIZE(PTI_BLD)):: ZM_SYS_RAT ! Auxiliar mass flow rate [kg s-1 m-2(bld)] 00338 ! 00339 REAL, DIMENSION(SIZE(PTI_BLD)):: ZXMIX ! Outdoor mixing fraction 00340 REAL, DIMENSION(SIZE(PTI_BLD)):: ZT_MIX ! Mixing air temperature [K] 00341 REAL, DIMENSION(SIZE(PTI_BLD)):: ZQ_MIX ! Mixing air specific humidity [kg kg-1] 00342 ! 00343 REAL,DIMENSION(SIZE(PTI_BLD)) :: ZQI_BLD ! Indoor air humidity at time step t + dt [K} 00344 REAL, DIMENSION(SIZE(PTI_BLD)):: ZWASTE 00345 ! 00346 REAL, DIMENSION(SIZE(PTI_BLD)):: ZDQS_FLOOR 00347 REAL, DIMENSION(SIZE(PTI_BLD)):: ZIMB_FLOOR 00348 REAL, DIMENSION(SIZE(PTI_BLD)):: ZDQS_MASS 00349 REAL, DIMENSION(SIZE(PTI_BLD)):: ZIMB_MASS 00350 REAL, DIMENSION(SIZE(PTI_BLD)):: ZLOAD_FLOOR ! sum of solar and internal loads on floor 00351 REAL, DIMENSION(SIZE(PTI_BLD)):: ZLOAD_MASS ! sum of solar and internal loads on mass 00352 REAL, DIMENSION(SIZE(PTI_BLD)):: ZRAD_FLOOR_MASS ! Rad. fluxes from floor to mass 00353 REAL, DIMENSION(SIZE(PTI_BLD)):: ZCONV_FLOOR_BLD ! Conv. fluxes from floor to indoor air 00354 REAL, DIMENSION(SIZE(PTI_BLD)):: ZCONV_MASS_BLD ! Conv. fluxes from mass to indoor air 00355 REAL, DIMENSION(SIZE(PTI_BLD)):: ZRHOI ! indoor air density 00356 ! 00357 INTEGER :: JJ ! Loop counter 00358 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00359 ! 00360 !!REAL :: ZEXPL = 0.5 !explicit coefficient for internal temperature evol. 00361 !!REAL :: ZIMPL = 0.5 !implicit coef.. 00362 ! 00363 !------------------------------------------------------------------------------- 00364 IF (LHOOK) CALL DR_HOOK('BEM',0,ZHOOK_HANDLE) 00365 ! 00366 !* 1. Initializations 00367 ! --------------- 00368 ! 00369 ZRHOI(:) = PPS(:) / (XRD * PTI_BLD(:) * ( 1.+((XRV/XRD)-1.)*PQI_BLD(:) ) ) 00370 ! *Temperal definitions for nat.vent* 00371 !ZTCOMF_MAX = 26. + 273.16 00372 ! 00373 ! *Definitions 00374 ZFAN_AP (:) = 600.0 00375 ZFAN_EFF(:) = 0.7 00376 ! 00377 ! *Other calcs 00378 IROOF = SIZE(PT_ROOF,2) 00379 IWALL = SIZE(PT_WALL_A,2) 00380 ! 00381 ! 00382 ! initial condition of QI_BLD equivalent to 50% RH 00383 IF (ANY(PQI_BLD(:) <= 1E-6)) PQI_BLD = 0.5 * QSAT(PTI_BLD, PPS) 00384 ! 00385 ! *Temperal definitions for shedule* 00386 GSCHED(:) = .FALSE. 00387 WHERE (GSCHED(:)) 00388 ZF_NIGHT(:) = 0.8 00389 ZF_DAY(:) = 1.2 00390 ELSE WHERE 00391 ZF_NIGHT(:) = 1. 00392 ZF_DAY(:) = 1. 00393 END WHERE 00394 ! 00395 ! *Int.gains schedule 00396 ! 00397 ZQIN = PQIN * PN_FLOOR 00398 IF (PTIME > 0. .AND. PTIME < 25200.) THEN ! night between 0000 and 0700 00399 ZQIN(:) = ZQIN(:) * ZF_NIGHT(:) 00400 ELSE 00401 ZQIN(:) = ZQIN(:) * ZF_DAY(:) 00402 END IF 00403 00404 ! *Change of units AC/H -> [m3 s-1 m-2(bld)] 00405 ZV_VENT(:) = PV_VENT(:) * PBLD_HEIGHT(:) / 3600. 00406 ZINF (:) = PINF (:) * PBLD_HEIGHT(:) / 3600. 00407 ! 00408 !* 2. heat balance for building floor and mass 00409 ! ---------------------------------------- 00410 ! 00411 !* 2.1 total load on the internal mass or floor 00412 ZLOAD_FLOOR(:) = (ZQIN(:) * PQIN_FRAD(:) * (1.-PQIN_FLAT(:)) + PTR_SW_WIN(:)) / (PMASS_O_BLD(:)+1.) 00413 WHERE (PN_FLOOR(:) > 1.) 00414 ZLOAD_MASS(:) = ZLOAD_FLOOR(:) 00415 ELSEWHERE 00416 ZLOAD_MASS(:) = 0. 00417 ENDWHERE 00418 ! 00419 !* 2.2 FLOOR HEAT BALANCE 00420 ! 00421 CALL FLOOR_LAYER_E_BUDGET(PT_FLOOR, PTSTEP, & 00422 PHC_FLOOR, PTC_FLOOR, PD_FLOOR, & 00423 PFLX_BLD_FLOOR, ZDQS_FLOOR, ZIMB_FLOOR,& 00424 PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN,& 00425 PF_FLOOR_ROOF, PRADHT_IN, & 00426 PT_MASS(:,1), PRAD_WALL_FLOOR, PRAD_ROOF_FLOOR, & 00427 PRAD_WIN_FLOOR, PLOAD_IN_FLOOR, PTI_BLD, ZRAD_FLOOR_MASS, ZCONV_FLOOR_BLD) 00428 ! 00429 !* 2.3 MASS HEAT BALANCE 00430 ! 00431 CALL MASS_LAYER_E_BUDGET(PT_MASS, PTSTEP, & 00432 PHC_FLOOR, PTC_FLOOR, PD_FLOOR/2., & 00433 PFLX_BLD_MASS, ZDQS_MASS, ZIMB_MASS,& 00434 PF_MASS_WALL, PF_MASS_WIN,& 00435 PF_MASS_FLOOR, PRADHT_IN, & 00436 PRAD_WALL_MASS, PRAD_ROOF_MASS, & 00437 PRAD_WIN_MASS, PLOAD_IN_MASS, PTI_BLD, & 00438 ZRAD_FLOOR_MASS, ZCONV_MASS_BLD ) 00439 ! 00440 ! 00441 ZAC_IN_WALL_A_COOL = CHTC_VERT_DOE(PT_WALL_A(:,IWALL), PTCOOL_TARGET) 00442 ZAC_IN_WALL_B_COOL = CHTC_VERT_DOE(PT_WALL_B(:,IWALL), PTCOOL_TARGET) 00443 ZAC_IN_WIN_COOL = CHTC_VERT_DOE(PT_WIN2, PTCOOL_TARGET) 00444 ZAC_IN_MASS_COOL = CHTC_VERT_DOE(PT_MASS(:,1), PTCOOL_TARGET) 00445 ZAC_IN_ROOF_COOL = CHTC_DOWN_DOE(PT_ROOF(:,IROOF),PTCOOL_TARGET) 00446 ZAC_IN_FLOOR_COOL = CHTC_UP_DOE(PT_FLOOR(:,1),PTCOOL_TARGET) 00447 00448 ZAC_IN_WALL_A_HEAT = CHTC_VERT_DOE(PT_WALL_A(:,IWALL), PTHEAT_TARGET) 00449 ZAC_IN_WALL_B_HEAT = CHTC_VERT_DOE(PT_WALL_B(:,IWALL), PTHEAT_TARGET) 00450 ZAC_IN_WIN_HEAT = CHTC_VERT_DOE(PT_WIN2, PTHEAT_TARGET) 00451 ZAC_IN_MASS_HEAT = CHTC_VERT_DOE(PT_MASS(:,1), PTHEAT_TARGET) 00452 ZAC_IN_ROOF_HEAT = CHTC_DOWN_DOE(PT_ROOF(:,IROOF),PTHEAT_TARGET) 00453 ZAC_IN_FLOOR_HEAT = CHTC_UP_DOE(PT_FLOOR(:,1),PTHEAT_TARGET) 00454 00455 DO JJ=1,SIZE(ZAC_IN_WIN_COOL) 00456 ZAC_IN_WALL_A_COOL(JJ) = MAX(1.,ZAC_IN_WALL_A_COOL(JJ)) 00457 ZAC_IN_WALL_B_COOL(JJ) = MAX(1., ZAC_IN_WALL_B_COOL(JJ)) 00458 ZAC_IN_WIN_COOL(JJ) = MAX(1., ZAC_IN_WIN_COOL(JJ)) 00459 ZAC_IN_MASS_COOL(JJ) = MAX(1., ZAC_IN_MASS_COOL(JJ)) 00460 ZAC_IN_ROOF_COOL(JJ) = MAX(1., ZAC_IN_ROOF_COOL(JJ)) 00461 ZAC_IN_FLOOR_COOL(JJ) = MAX(1., ZAC_IN_FLOOR_COOL(JJ)) 00462 00463 ZAC_IN_WALL_A_HEAT(JJ) = MAX(1.,ZAC_IN_WALL_A_HEAT(JJ)) 00464 ZAC_IN_WALL_B_HEAT(JJ) = MAX(1., ZAC_IN_WALL_B_HEAT(JJ)) 00465 ZAC_IN_WIN_HEAT(JJ) = MAX(1., ZAC_IN_WIN_HEAT(JJ)) 00466 ZAC_IN_MASS_HEAT(JJ) = MAX(1., ZAC_IN_MASS_HEAT(JJ)) 00467 ZAC_IN_ROOF_HEAT(JJ) = MAX(1., ZAC_IN_ROOF_HEAT(JJ)) 00468 ZAC_IN_FLOOR_HEAT(JJ) = MAX(1., ZAC_IN_FLOOR_HEAT(JJ)) 00469 ENDDO 00470 00471 !* 4. Indoor energy balance calculation 00472 ! --------------------------------- 00473 ! 00474 DO JJ=1,SIZE(PT_CANYON) 00475 ! *first guess of indoor temperature 00476 00477 ZTI_BLD(JJ) = PTI_BLD(JJ) & 00478 + PTSTEP/(ZRHOI(JJ) * XCPD * PBLD_HEIGHT(JJ)) & 00479 * ( PWALL_O_BLD(JJ) * PCONV_WALL_BLD(JJ) & 00480 + PGLAZ_O_BLD (JJ) * PCONV_WIN_BLD(JJ) & 00481 + PMASS_O_BLD(JJ) * ZCONV_MASS_BLD(JJ) & 00482 + PCONV_ROOF_BLD(JJ) & 00483 + ZCONV_FLOOR_BLD(JJ) & 00484 + ZQIN(JJ) * (1 - PQIN_FRAD(JJ)) * (1 - PQIN_FLAT(JJ)) ) 00485 ! 00486 !################################################################################ 00487 ! *is natural surventilation active at the current time step ? 00488 !--------------------------------------------------------------------------------- 00489 ! 00490 ! *no surventilation possible 00491 00492 IF (HNATVENT(JJ)=='NONE') THEN 00493 ! 00494 GNAT_VENT(JJ) = .FALSE. 00495 ! 00496 ! *automatic management of surventilation 00497 ELSEIF (HNATVENT(JJ)=='AUTO') THEN 00498 ! 00499 IF (MOD(PTIME, 3600.) .LT. 1.E-6) THEN 00500 ! 00501 IF ( PTI_BLD(JJ).GT. PT_CANYON(JJ) + 1 ) THEN ! condition to enable the 00502 ! surventilation rate calculation whereas risk of floating point exception 00503 CALL GET_NAT_VENT(PTI_BLD(JJ), PT_CANYON(JJ), PU_CANYON(JJ), PGR(JJ), & 00504 PFLOOR_HW_RATIO(JJ), PBLD_HEIGHT(JJ), ZNAT_VENT(JJ)) 00505 ! 00506 ZTI_BLD_OPEN (JJ) = ZTI_BLD(JJ) & 00507 + ZNAT_VENT(JJ) * PTSTEP/PBLD_HEIGHT(JJ) * (PT_CANYON(JJ) - PTI_BLD(JJ)) 00508 ZTI_BLD_CLOSED(JJ) = ZTI_BLD(JJ) & 00509 + (ZINF(JJ) + ZV_VENT(JJ)) * PTSTEP/PBLD_HEIGHT(JJ) * (PT_CANYON(JJ) - PTI_BLD(JJ)) 00510 ! 00511 GNAT_VENT(JJ) = (ZTI_BLD_OPEN(JJ) <= PTCOOL_TARGET (JJ) .AND. & 00512 ZTI_BLD_OPEN(JJ) < ZTI_BLD_CLOSED(JJ) .AND. & 00513 ZTI_BLD_OPEN(JJ) > PTHEAT_TARGET (JJ) + 4.) 00514 ! 00515 ELSE 00516 GNAT_VENT(JJ) = .FALSE. 00517 ENDIF 00518 ONATVENT_NIGHT(JJ) = GNAT_VENT(JJ) 00519 ELSE 00520 GNAT_VENT(JJ) = ONATVENT_NIGHT(JJ) 00521 ENDIF 00522 ! 00523 ! *manual management of surventilation 00524 ELSEIF (HNATVENT(JJ)=='MANU') THEN 00525 ! 00526 ONATVENT_NIGHT(JJ) = ONATVENT_NIGHT(JJ) .AND. & 00527 .NOT. ( PTIME > 5.*3600 .AND. PTIME < 18.*3600 ) 00528 ! 00529 GNAT_VENT(JJ) = ( PTIME > 18.*3600. .AND. PTIME < 21.*3600. & 00530 .AND. PT_CANYON(JJ) < PTI_BLD(JJ)+2. & 00531 .AND. PT_CANYON(JJ) > PTHEAT_TARGET(JJ) & 00532 .AND. ( PTI_BLD(JJ) > PTHEAT_TARGET(JJ)+5. & 00533 .OR. PTI_BLD(JJ) == PTCOOL_TARGET(JJ) ) ) 00534 GNAT_VENT(JJ) = GNAT_VENT(JJ) .OR. ONATVENT_NIGHT(JJ) 00535 ! 00536 ENDIF 00537 ! 00538 ! Decicion about natural surventilation OK 00539 !################################################################################ 00540 ! 00541 ! 00542 !################################################################################ 00543 ! COMPUTE ENERGY DEMAND 00544 !--------------------------------------------------------------------------------- 00545 00546 ! *If natural surventilation ACTIVE 00547 IF (GNAT_VENT(JJ)) THEN 00548 ! 00549 CALL GET_NAT_VENT(PTI_BLD(JJ), PT_CANYON(JJ), PU_CANYON(JJ), PGR(JJ), & 00550 PFLOOR_HW_RATIO(JJ), PBLD_HEIGHT(JJ), ZNAT_VENT(JJ) ) 00551 ! 00552 ZV_VENT (JJ) = 0. 00553 ZINF (JJ) = 0. 00554 ! 00555 PH_BLD_COOL (JJ) = 0.0 ! No HVAC consumption 00556 PH_BLD_HEAT (JJ) = 0.0 00557 PLE_BLD_COOL(JJ) = 0.0 ! No HVAC consumption 00558 PLE_BLD_HEAT(JJ) = 0.0 00559 ! 00560 PT_BLD_COOL (JJ) = 0.0 ! No HVAC consumption 00561 PHVAC_COOL (JJ) = 0.0 00562 PT_SYS (JJ) = PTI_BLD(JJ) ! No mechanical ventilation 00563 PQ_SYS (JJ) = PQI_BLD(JJ) ! 00564 PH_WASTE (JJ) = 0.0 00565 PLE_WASTE (JJ) = 0.0 00566 PFAN_POWER (JJ) = 0.0 00567 PHVAC_HEAT (JJ) = 0.0 00568 ! 00569 PM_SYS (JJ) = 0.0 00570 PCOP (JJ) = 0.0 00571 PCAP_SYS(JJ) = 0.0 00572 ! 00573 ! *If natural surventilation INACTIVE 00574 ELSE 00575 ! 00576 ZNAT_VENT(JJ) = 0. 00577 ! 00578 ! ------------------------------------------------ 00579 ! * Building energy demand for heating and cooling 00580 ! ------------------------------------------------ 00581 ! 00582 PH_BLD_COOL(JJ) = PWALL_O_BLD(JJ)/2. * (ZAC_IN_WALL_A_COOL(JJ) * (PT_WALL_A(JJ,IWALL) - PTCOOL_TARGET(JJ)) & 00583 + ZAC_IN_WALL_B_COOL(JJ) * (PT_WALL_B(JJ,IWALL) - PTCOOL_TARGET(JJ))) & 00584 + PGLAZ_O_BLD(JJ) * ZAC_IN_WIN_COOL(JJ) * (PT_WIN2(JJ) - PTCOOL_TARGET(JJ)) & 00585 + ZAC_IN_MASS_COOL (JJ)* PMASS_O_BLD(JJ) * (PT_MASS(JJ,1) - PTCOOL_TARGET(JJ)) & 00586 + ZAC_IN_ROOF_COOL (JJ) * (PT_ROOF(JJ,IROOF) - PTCOOL_TARGET(JJ)) & 00587 + ZAC_IN_FLOOR_COOL(JJ) * (PT_FLOOR(JJ,1) - PTCOOL_TARGET(JJ)) & 00588 + ZQIN(JJ) * (1 - PQIN_FRAD(JJ)) * (1 - PQIN_FLAT(JJ)) & 00589 + (ZINF(JJ) + ZV_VENT(JJ)) * ZRHOI(JJ) * XCPD * (PT_CANYON(JJ) - PTCOOL_TARGET(JJ)) 00590 ! 00591 PH_BLD_HEAT(JJ) = - ( PWALL_O_BLD(JJ)/2. * (ZAC_IN_WALL_A_HEAT(JJ) * (PT_WALL_A(JJ,IWALL) - PTHEAT_TARGET(JJ)) & 00592 +ZAC_IN_WALL_B_HEAT(JJ) * (PT_WALL_B(JJ,IWALL) - PTHEAT_TARGET(JJ))) & 00593 + PGLAZ_O_BLD(JJ) * ZAC_IN_WIN_HEAT(JJ) * (PT_WIN2(JJ) - PTHEAT_TARGET(JJ)) & 00594 + ZAC_IN_MASS_HEAT(JJ)* PMASS_O_BLD(JJ) * (PT_MASS(JJ,1) - PTHEAT_TARGET(JJ)) & 00595 + ZAC_IN_ROOF_HEAT(JJ) * (PT_ROOF(JJ,IROOF) - PTHEAT_TARGET(JJ)) & 00596 + ZAC_IN_FLOOR_HEAT(JJ) * (PT_FLOOR(JJ,1) - PTHEAT_TARGET(JJ)) & 00597 + ZQIN(JJ) * (1 - PQIN_FRAD(JJ))* (1 - PQIN_FLAT(JJ)) & 00598 + (ZINF(JJ) + ZV_VENT(JJ)) * ZRHOI(JJ) * XCPD * (PT_CANYON(JJ) - PTHEAT_TARGET(JJ))) 00599 ! 00600 00601 ZQCOOL_TARGET(JJ) = 0.62198 * PHR_TARGET(JJ) * PSAT(PTCOOL_TARGET(JJ)) / & 00602 (PPS(JJ)- PHR_TARGET(JJ) * PSAT(PTCOOL_TARGET(JJ))) 00603 ! 00604 PLE_BLD_COOL(JJ) = ZQIN(JJ) * PQIN_FLAT(JJ) & 00605 + (ZINF(JJ) + ZV_VENT(JJ)) * ZRHOI(JJ) * XLVTT * (PQ_CANYON(JJ) - ZQCOOL_TARGET(JJ)) 00606 ! 00607 00608 ZQHEAT_TARGET(JJ) = 0.62198 * PHR_TARGET(JJ) * PSAT(PTHEAT_TARGET(JJ)) / & 00609 (PPS(JJ)- PHR_TARGET(JJ) * PSAT(PTHEAT_TARGET(JJ))) 00610 ! 00611 PLE_BLD_HEAT(JJ) = ZQIN(JJ) * PQIN_FLAT(JJ) & 00612 + (ZINF(JJ) + ZV_VENT(JJ)) * ZRHOI(JJ) * XLVTT * (PQ_CANYON(JJ) - ZQHEAT_TARGET(JJ)) 00613 ! 00614 ! * Autosize calculations 00615 ! 00616 IF (OAUTOSIZE .AND. KDAY==15) THEN 00617 ! 00618 IF (PH_BLD_COOL(JJ) > PAUX_MAX(JJ)) THEN 00619 ! 00620 PAUX_MAX (JJ) = PH_BLD_COOL(JJ) 00621 ! 00622 ! Cooling coil sensible heat rate 00623 ZSHR (JJ) = MIN(XCPD * (PTCOOL_TARGET(JJ) - PT_ADP(JJ)) / & 00624 (ENTH_FN_T_Q(PTCOOL_TARGET(JJ),ZQCOOL_TARGET(JJ)) - & 00625 ENTH_FN_T_Q(PT_ADP(JJ),QSAT(PT_ADP(JJ),PPS(JJ)))), 1.) 00626 ! Cooling Coil Capacity [W m-2(bld)] 00627 PCAP_SYS_RAT(JJ) = PH_BLD_COOL(JJ) / ZSHR(JJ) 00628 ! 00629 ! Cooling rated air flow rate [kg s-1 m-2(bld)] 00630 ZM_SYS_RAT (JJ) = PH_BLD_COOL(JJ) / XCPD / (PTCOOL_TARGET(JJ)-(14.0+273.16)) 00631 IF (ZM_SYS_RAT(JJ) > PM_SYS_RAT(JJ)) PM_SYS_RAT(JJ) = ZM_SYS_RAT(JJ) 00632 ! 00633 ! Impose condition 00634 IF (PM_SYS_RAT(JJ)/ZRHOI(JJ)/PCAP_SYS_RAT(JJ) < 0.00004027) THEN 00635 PCAP_SYS_RAT(JJ) = PM_SYS_RAT(JJ)/ZRHOI(JJ)/0.00004027 00636 ELSE IF (PM_SYS_RAT(JJ)/ZRHOI(JJ)/PCAP_SYS_RAT(JJ) > 0.00006041) THEN 00637 PCAP_SYS_RAT(JJ) = PM_SYS_RAT(JJ)/ZRHOI(JJ)/0.00006041 00638 END IF 00639 ! 00640 END IF 00641 ! 00642 END IF 00643 ! 00644 ! * END Autosize calculations 00645 ! 00646 ! * system efficiency 00647 ! ................... 00648 ! 00649 PM_SYS (JJ) = PM_SYS_RAT (JJ) 00650 PCOP (JJ) = PCOP_RAT (JJ) 00651 PCAP_SYS(JJ) = PCAP_SYS_RAT(JJ) 00652 ! 00653 ! * Mixing conditions 00654 ! ................. 00655 ! 00656 ZXMIX (JJ) = ZV_VENT(JJ) * ZRHOI(JJ) / PM_SYS(JJ) 00657 ZT_MIX(JJ) = ZXMIX(JJ) * PT_CANYON(JJ) + (1.-ZXMIX(JJ)) * PTI_BLD(JJ) 00658 ZQ_MIX(JJ) = ZXMIX(JJ) * PQ_CANYON(JJ) + (1.-ZXMIX(JJ)) * PQI_BLD(JJ) 00659 ! 00660 ! --------------------------------------------- 00661 ! * COOLING system : Performance and Waste heat 00662 ! --------------------------------------------- 00663 ! 00664 IF (PH_BLD_COOL(JJ) >= 0.0) THEN 00665 ! 00666 ! *ideal system 00667 IF (HCOOL_COIL=='IDEAL') THEN 00668 ! 00669 PT_BLD_COOL(JJ) = PH_BLD_COOL(JJ) + PLE_BLD_COOL(JJ) 00670 !desactivation of LE_BLD_COOL impact on HVAC_COOL calculation 00671 !following too much impact in VURCA simulation (23/01/2012) 00672 !this would be the case for a vaporization system ! 00673 !PHVAC_COOL (JJ) = PT_BLD_COOL(JJ) / PCOP_RAT(JJ) 00674 PHVAC_COOL (JJ) = PH_BLD_COOL(JJ) / PCOP_RAT(JJ) 00675 IF (PHVAC_COOL(JJ) < 0.0) PHVAC_COOL(JJ) = 0.0 00676 ! 00677 PT_SYS(JJ) = ZT_MIX(JJ) - PH_BLD_COOL (JJ) /PM_SYS(JJ) / XCPD 00678 !PQ_SYS(JJ) = ZQ_MIX(JJ) - PLE_BLD_COOL(JJ) / PM_SYS(JJ)/ XLVTT 00679 !desactivation following too much impact in VURCA simulation 00680 !(23/01/2012) 00681 PQ_SYS(JJ) = ZQ_MIX(JJ) 00682 ! 00683 PH_WASTE(JJ) = PHVAC_COOL(JJ) * (1.+PCOP_RAT(JJ)) * (1. - PF_WATER_COND(JJ)) 00684 PLE_WASTE(JJ) = PHVAC_COOL(JJ) * (1.+PCOP_RAT(JJ)) * PF_WATER_COND(JJ) 00685 ! 00686 ! *real system 00687 ELSEIF (HCOOL_COIL=='DXCOIL') THEN 00688 ! 00689 CALL DX_AIR_COOLING_COIL_CV(PT_CANYON(JJ), PQ_CANYON(JJ), PPS(JJ), & 00690 ZRHOI(JJ), ZT_MIX(JJ), ZQ_MIX(JJ), PCOP_RAT(JJ), & 00691 PCAP_SYS_RAT(JJ), PT_ADP(JJ), PF_WATER_COND(JJ), & 00692 PM_SYS(JJ), PH_BLD_COOL(JJ), PH_WASTE(JJ), PLE_WASTE(JJ), & 00693 PCOP(JJ), PCAP_SYS(JJ), PT_SYS(JJ), PQ_SYS(JJ), & 00694 PHVAC_COOL(JJ), PT_BLD_COOL(JJ) ) 00695 ! 00696 ENDIF !end type of cooling system 00697 00698 !!! case of system without atmospheric releases. I-e releases in soil/water F_WATER_COND < 0 00699 IF (PF_WATER_COND(JJ) < 0) THEN 00700 PH_WASTE(JJ) = 0. 00701 PLE_WASTE(JJ) = 0. 00702 ENDIF 00703 !!!! 00704 ! 00705 ! From EP Engineering Reference (p. 647) 00706 PFAN_POWER(JJ) = PM_SYS(JJ) * ZFAN_AP(JJ) * ZFAN_EFF(JJ) * ZRHOI(JJ) 00707 ! 00708 PH_BLD_HEAT (JJ) = 0.0 00709 PLE_BLD_HEAT(JJ) = 0.0 00710 PHVAC_HEAT (JJ) = 0.0 00711 ! 00712 ! --------------------------------------------- 00713 ! * HEATING system : Performance and Waste heat 00714 ! --------------------------------------------- 00715 ! 00716 ELSE IF (PH_BLD_HEAT(JJ) > 0.0) THEN 00717 ! 00718 ! *specific computation for real heating system 00719 IF (HHEAT_COIL .EQ. 'FINCAP') THEN 00720 IF (PH_BLD_HEAT(JJ) > PCAP_SYS_HEAT(JJ)) PH_BLD_HEAT(JJ) = PCAP_SYS_HEAT(JJ) 00721 END IF 00722 ! 00723 PT_SYS(JJ) = ZT_MIX(JJ) + PH_BLD_HEAT(JJ) / PM_SYS(JJ) / XCPD 00724 PQ_SYS(JJ) = ZQ_MIX(JJ) 00725 ! 00726 PHVAC_HEAT (JJ) = PH_BLD_HEAT(JJ) / PEFF_HEAT(JJ) 00727 PH_WASTE (JJ) = PHVAC_HEAT(JJ) - PH_BLD_HEAT(JJ) 00728 PLE_WASTE (JJ) = 0.0 00729 PH_BLD_COOL (JJ) = 0.0 00730 PLE_BLD_COOL(JJ) = 0.0 00731 PT_BLD_COOL (JJ) = 0.0 00732 PHVAC_COOL (JJ) = 0.0 00733 ! From EP Engineering Reference (p. 647) 00734 PFAN_POWER(JJ) = PM_SYS(JJ)*ZFAN_AP(JJ)*(ZFAN_EFF(JJ)*ZRHOI(JJ)) 00735 ! 00736 ! ------------------------------ 00737 ! * NEITHEIR COOLING NOR HEATING 00738 ! ------------------------------ 00739 ! 00740 ELSE 00741 ! 00742 PH_BLD_COOL (JJ) = 0.0 00743 PH_BLD_HEAT (JJ) = 0.0 00744 PLE_BLD_COOL(JJ) = 0.0 00745 PLE_BLD_HEAT(JJ) = 0.0 00746 ! 00747 PT_BLD_COOL (JJ) = 0.0 00748 PHVAC_COOL (JJ) = 0.0 00749 PT_SYS (JJ) = ZT_MIX(JJ) 00750 PQ_SYS (JJ) = ZQ_MIX(JJ) 00751 PH_WASTE (JJ) = 0.0 00752 PLE_WASTE (JJ) = 0.0 00753 PFAN_POWER (JJ) = 0.0 00754 PHVAC_HEAT (JJ) = 0.0 00755 ! 00756 END IF !end for heating/cooling sytem 00757 ! 00758 END IF 00759 ! 00760 !--------------------------------------------------------------------------------- 00761 ! ENERGY DEMAND COMPUTED 00762 !################################################################################ 00763 ENDDO 00764 ! 00765 !--------------------------------------------------- 00766 ! EVOLUTION OF THE INTERNAL TEMPERATURE AND HUMIDITY 00767 !################################################### 00768 ! 00769 ZTI_BLD(:) = ZTI_BLD(:) + PTSTEP/PBLD_HEIGHT(:) * & 00770 ((ZINF(:) + ZNAT_VENT(:)) * (PT_CANYON(:) - PTI_BLD(:)) & 00771 + PM_SYS(:) / ZRHOI(:) * (PT_SYS (:) - PTI_BLD(:)) ) 00772 ! 00773 ZQI_BLD(:) = PQI_BLD(:) + PTSTEP/PBLD_HEIGHT(:) * & 00774 ( ZQIN(:) * PQIN_FLAT(:) / ( ZRHOI(:) * XLVTT) & 00775 + (ZINF(:) + ZNAT_VENT(:)) * (PQ_CANYON(:) - PQI_BLD(:)) & 00776 + PM_SYS(:) / ZRHOI(:) * (PQ_SYS (:) - PQI_BLD(:)) ) 00777 ! 00778 ! 00779 ! Update variables 00780 PTI_BLD(:) = ZTI_BLD(:) 00781 PQI_BLD(:) = ZQI_BLD(:) 00782 00783 00784 ! 00785 ! Waste heat due to infiltration/ventilation 00786 ZWASTE (:) = (ZINF(:)+ZV_VENT(:)+ZNAT_VENT(:)) * ZRHOI(:) 00787 PH_WASTE (:) = PH_WASTE (:) + ZWASTE(:) * XCPD * (PTI_BLD(:) - PT_CANYON(:)) 00788 PLE_WASTE(:) = PLE_WASTE(:) + ZWASTE(:) * XLVTT * (PQI_BLD(:) - PQ_CANYON(:)) 00789 ! 00790 ! 00791 IF (LHOOK) CALL DR_HOOK('BEM',1,ZHOOK_HANDLE) 00792 ! 00793 CONTAINS 00794 ! 00795 SUBROUTINE GET_NAT_VENT(PPTI_BLD, PPT_CANYON, PPU_CANYON, PPGR, & 00796 PF_AUX, PPBLD_HEIGHT, PNAT_VENT) 00797 ! 00798 IMPLICIT NONE 00799 ! 00800 REAL, INTENT(IN) :: PPTI_BLD 00801 REAL, INTENT(IN) :: PPT_CANYON 00802 REAL, INTENT(IN) :: PPU_CANYON 00803 REAL, INTENT(IN) :: PPGR 00804 REAL, INTENT(IN) :: PF_AUX 00805 REAL, INTENT(IN) :: PPBLD_HEIGHT 00806 REAL, INTENT(OUT) :: PNAT_VENT 00807 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00808 ! 00809 IF (LHOOK) CALL DR_HOOK('BEM:GET_NAT_VENT',0,ZHOOK_HANDLE) 00810 ! 00811 PNAT_VENT = XG * (PPTI_BLD - PPT_CANYON) 00812 IF (PNAT_VENT .LT. 0.) THEN ! exceptional case with MANU ventilation system 00813 PNAT_VENT= PPBLD_HEIGHT/3600. !minimum value 00814 ELSE 00815 PNAT_VENT = 1./3. * (PNAT_VENT/PPT_CANYON)**(1./2.) & 00816 * (1.5 + PPTI_BLD/PNAT_VENT * 1./2. * PPU_CANYON**2*0.1)**(3./2.) & 00817 * PPGR * PF_AUX / 1.5 / 2. 00818 PNAT_VENT = MIN(PNAT_VENT, 5.0*PPBLD_HEIGHT/3600.) 00819 ENDIF 00820 ! 00821 IF (LHOOK) CALL DR_HOOK('BEM:GET_NAT_VENT',1,ZHOOK_HANDLE) 00822 ! 00823 END SUBROUTINE GET_NAT_VENT 00824 ! 00825 END SUBROUTINE BEM