SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
bem.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! ##########################################################################
6  SUBROUTINE bem(PTSTEP, PSUNTIME, HCOOL_COIL, HHEAT_COIL, &
7  oautosize, kday, hnatvent, &
8  pps, prhoa, pt_canyon, pq_canyon, pu_canyon, &
9  pt_roof, pt_wall_a, pt_wall_b, pbld, pbld_height, pwall_o_hor,&
10  phc_floor, ptc_floor, pd_floor, &
11  pt_win2, pgr, pqin, pqin_frad, pqin_flat, &
12  peff_heat, pinf, ptcool_target, ptheat_target, phr_target, &
13  pf_water_cond, pv_vent, pcap_sys_heat, pt_adp, pcop_rat, &
14  paux_max, pt_floor, pt_mass, pti_bld, pqi_bld, &
15  pcap_sys_rat, pm_sys_rat, onatvent_night, &
16  ph_bld_cool, ph_bld_heat, ple_bld_cool, ple_bld_heat, &
17  pt_bld_cool, phvac_cool, pt_sys, pq_sys, ph_waste, ple_waste, &
18  pfan_power, phvac_heat, pm_sys, pcop, pcap_sys, phu_bld, &
19  ptr_sw_win, pt_rad_ind, pflx_bld_floor, pflx_bld_mass, &
20  pf_floor_mass, pf_floor_wall, pf_floor_win, &
21  pradht_in, pn_floor, pwall_o_bld, pglaz_o_bld, pmass_o_bld, &
22  pfloor_hw_ratio, pf_floor_roof, pf_mass_floor, pf_mass_wall, &
23  pf_mass_win, prad_roof_mass, prad_roof_floor, prad_wall_mass, &
24  prad_wall_floor, prad_win_mass, prad_win_floor, &
25  pconv_roof_bld, pconv_wall_bld, pconv_win_bld, &
26  pload_in_floor, pload_in_mass )
27 ! ##########################################################################
28 !
29 !!**** *BEM*
30 !!
31 !! PURPOSE
32 !! -------
33 !
34 ! Computes the temperature and humidity evolution of indoor air,
35 ! building energy demand, HVAC energy consumption,
36 ! waste heat from HVAC systems, and heat fluxes from indoor to building surfaces.
37 !
38 !
39 !!** METHOD
40 ! ------
41 !
42 ! NOMENCLATURE: bld - refers to building plant area;
43 ! floor- refers to building plant area multiplied
44 ! by the number of floors;
45 ! wall - refers to wall area (excluding windows).
46 ! win - refers to window area.
47 ! mass - refers to internal mass area.
48 !
49 !
50 ! solar radiation transmitted through windows
51 ! *******************************************
52 !
53 ! Qsol_tr_win = Qsol_facade * tr_win * GR
54 !
55 !
56 ! indoor wall conv/rad heat transfer coefficients
57 ! ***********************************************
58 !
59 ! The calculation of CHTC accounts for favorable or unfavorable convection
60 ! depending on the relative position between the hot layer and cold layer
61 !
62 !
63 ! building energy demand
64 ! **********************
65 !
66 ! Calculation of the cooling and heating, sensible and latent building energy demand.
67 ! The sensible demand includes the convective heat transfer from indoor surfaces, the
68 ! convective fraction of internal heat gains, and sensible infiltration/ventilation heat
69 ! gains. The latent demand includes the latent fraction of internal heat gains and latent
70 ! infiltration/ventilation heat gains.
71 !
72 ! surface areas and volummes (referred to m2_bld)
73 ! ***********************************************
74 !
75 ! Awall = WALL_O_HOR * (1 - GR) / BLD [m2_wall/m2_bld]
76 ! Awin = WALL_O_HOR * GR / BLD [m2_win/m2_bld]
77 ! Amass = 2 * N_FLOOR [m2_mass/m2_bld]
78 ! N_FLOOR = BLD_HEIGHT / FLOOR_HEIGHT [#]
79 ! Aroof = 1 [m2_roof/m2_bld]
80 ! Afloor = 1 [m2_floor/m2_bld]
81 ! Vol_air = BLD_HEIGHT [m3_bld/m2_bld]
82 !
83 !
84 ! evolution of the internal temperature
85 ! *************************************
86 !
87 
88 ! dTin
89 ! Vol_air * ro_air * cp_air * ---- = h_wall * Awall * (Twall - Tin)
90 ! dt + h_roof * Aroof * (Troof -Tin)
91 ! + h_floor * Afloor *(Tfloor - Tin)
92 ! + h_mass * Amass * (Tmass - Tin)
93 ! + h_win * Awin * (Twin - Tin)
94 ! + Qig * (1 - fig_rad) * (1-fig_lat)
95 ! + Vinf * ro_air * cp_air * (Tout - Tin)
96 ! + Vsys * ro_air * cp_air * (Tsys - Tin)
97 !
98 !
99 ! evolution of the internal specific humidity
100 ! *******************************************
101 !
102 ! dQin
103 ! Vol_air * ro_air * lv_air * ---- = Qig * fig_lat
104 ! dt + Vinf * ro_air * lv_air * (Qout - Qin)
105 ! + Vsys * ro_air * lv_air * (Qsys - Qin)
106 !
107 !
108 ! heat fluxes from indoor to surfaces
109 ! ***********************************
110 !
111 ! Qin_wall = h_wall * (Tin - Twall) [W/m2_wall]
112 ! Qin_roof = h_roof * (Tin - Troof) [W/m2_roof]
113 ! Qin_floor = h_floor * (Tin - Tfloor) [W/m2_floor]
114 ! Qin_mass = h_wall * (Tin - Tmass)
115 ! + Qig * fig_rad * (1-fig_lat)/ 2
116 ! + Qsol_tr_win [W/m2_mass]
117 !
118 !
119 ! energy consumption and waste heat from cooling system
120 ! *****************************************************
121 !
122 ! Qhvac = Qbld / COP
123 ! Qwaste = Qbld + Qhvac
124 !
125 !
126 ! energy consumption and waste heat from heating system
127 ! *****************************************************
128 !
129 ! Qhvac = Qbld / Eff
130 ! Qwaste = Qhvac - Qbld
131 !
132 !
133 !! EXTERNAL
134 !! --------
135 !!
136 !!
137 !! IMPLICIT ARGUMENTS
138 !! ------------------
139 !!
140 !!
141 !! REFERENCE
142 !! ---------
143 !!
144 !!
145 !! AUTHOR
146 !! ------
147 !!
148 !! B. Bueno * Meteo-France *
149 !!
150 !!! MODIFICATIONS
151 !! -------------
152 !! Original 2010
153 !! G. Pigeon nov. 2011: inclusion floor/mass budget inside
154 !! add automatic/manual ventilation
155 !! conserve exchanges with the different surfaces inside 1 time step
156 !! G. Pigeon sept. 2012: use of TARP/DOE coef for indoor convection
157 !! use of both PT_WALL_A and PT_WALL_B for calculations
158 !! the internal mass depth is 1/2 of the floor depth
159 !! add the option of no atmospheric heat releases by HVAC system (PF_WATER_COND < 0)
160 !! G. Pigeon oct. 2012: use indoor air density + new solar heat gain distribution
161 !! V. Masson May 2013 implicitation of internal building temperature evolution
162 !-------------------------------------------------------------------------------
163 !
164 !* 0. DECLARATIONS
165 ! ------------
166 !
167 USE modd_csts,ONLY : xcpd,xstefan,xlvtt,xg, xrv, xrd
168 
169 USE mode_thermos
170 USE mode_psychro
171 USE modi_dx_air_cooling_coil_cv
172 USE modi_floor_layer_e_budget
173 USE modi_mass_layer_e_budget
174 USE mode_conv_doe
175 !
176 USE yomhook ,ONLY : lhook, dr_hook
177 USE parkind1 ,ONLY : jprb
178 !
179 IMPLICIT NONE
180 !
181 !* 0.1 Declarations of arguments
182 !
183 !
184 REAL, INTENT(IN) :: ptstep ! Time step
185 REAL, DIMENSION(:), INTENT(IN) :: psuntime ! current solar time since midnight (solar time, s)
186  CHARACTER(LEN=6), INTENT(IN) :: hcool_coil ! type of cooling system IDEAL/DX_COOL
187  CHARACTER(LEN=6), INTENT(IN) :: hheat_coil ! type of heating system IDEAL/FIN_CAP
188 LOGICAL, INTENT(IN) :: oautosize ! Flag to activate autosize calculations
189 INTEGER, INTENT(IN) :: kday ! Simulation day
190 !
191  CHARACTER(LEN=4), DIMENSION(:), INTENT(IN) :: hnatvent
192 !
193 REAL, DIMENSION(:), INTENT(IN) :: pps ! Canyon air pressure [Pa]
194 REAL, DIMENSION(:), INTENT(IN) :: prhoa ! Air density at the lowest level [kg m-3]
195 REAL, DIMENSION(:), INTENT(IN) :: pt_canyon ! Canyon air temperature [K]
196 REAL, DIMENSION(:), INTENT(IN) :: pq_canyon ! Canyon air specific humidity [kg kg-1]
197 REAL, DIMENSION(:), INTENT(IN) :: pu_canyon ! Canyon wind speed (m s-1)
198 REAL, DIMENSION(:,:), INTENT(IN) :: pt_roof ! Roof layers temperatures [K]
199 REAL, DIMENSION(:,:), INTENT(IN) :: pt_wall_a ! Wall A layers temperatures [K]
200 REAL, DIMENSION(:,:), INTENT(IN) :: pt_wall_b ! Wall B layers temperatures [K]
201 !
202 REAL, DIMENSION(:), INTENT(IN) :: pbld ! Urban horizontal building density
203 REAL, DIMENSION(:), INTENT(IN) :: pbld_height ! Average building height [m]
204 REAL, DIMENSION(:), INTENT(IN) :: pwall_o_hor ! Wall to horizontal surface ratio
205 !
206 REAL, DIMENSION(:,:), INTENT(IN) :: phc_floor ! heat capacity for road layers
207 REAL, DIMENSION(:,:), INTENT(IN) :: ptc_floor ! thermal conductivity for
208  ! road layers
209 REAL, DIMENSION(:,:), INTENT(IN) :: pd_floor ! depth of road layers
210 !
211 REAL, DIMENSION(:), INTENT(IN) :: pt_win2 ! Indoor window temperature [K]
212 REAL, DIMENSION(:), INTENT(IN) :: pgr ! Glazing ratio
213 REAL, DIMENSION(:), INTENT(IN) :: pqin ! Internal heat gains [W m-2(floor)]
214 REAL, DIMENSION(:), INTENT(IN) :: pqin_frad ! Radiant fraction of internal heat gains
215 REAL, DIMENSION(:), INTENT(IN) :: pqin_flat ! Latent franction of internal heat gains
216 REAL, DIMENSION(:), INTENT(IN) :: peff_heat ! Efficiency of the heating system
217 REAL, DIMENSION(:), INTENT(IN) :: pinf ! Infiltration flow rate [AC/H]
218 REAL, DIMENSION(:), INTENT(IN) :: ptcool_target ! Cooling setpoint of HVAC system [K]
219 REAL, DIMENSION(:), INTENT(IN) :: ptheat_target ! Heating setpoint of HVAC system [K]
220 REAL, DIMENSION(:), INTENT(IN) :: phr_target ! Relative humidity setpoint
221 REAL,DIMENSION(:), INTENT(IN) :: pf_water_cond !fraction of evaporation for the condensers
222 REAL, DIMENSION(:), INTENT(IN) :: pv_vent ! Ventilation flow rate [AC/H]
223 REAL, DIMENSION(:), INTENT(IN) :: pcap_sys_heat ! Capacity of the heating system
224  ! [W m-2(bld)]
225 REAL, DIMENSION(:), INTENT(IN) :: pt_adp ! Apparatus dewpoint temperature of the
226  ! cooling coil [K]
227 REAL, DIMENSION(:), INTENT(IN) :: pcop_rat ! Rated COP of the cooling system
228 !
229 REAL, DIMENSION(:), INTENT(INOUT):: paux_max ! Auxiliar variable for autosize calcs
230 REAL, DIMENSION(:,:), INTENT(INOUT):: pt_floor ! Floor layers temperatures [K]
231 REAL, DIMENSION(:,:), INTENT(INOUT):: pt_mass ! Internal mass layers temperatures [K]
232 REAL, DIMENSION(:), INTENT(INOUT):: pti_bld ! Indoor air temperature [K]
233 REAL, DIMENSION(:), INTENT(INOUT):: pqi_bld ! Indoor air specific humidity [kg kg-1]
234 
235 REAL, DIMENSION(:), INTENT(INOUT):: pcap_sys_rat ! Rated capacity of the cooling system
236  ! [W m-2(bld)]
237 REAL, DIMENSION(:), INTENT(INOUT):: pm_sys_rat ! Rated HVAC mass flow rate
238  ! [kg s-1 m-2(bld)]
239 LOGICAL, DIMENSION(:),INTENT(INOUT):: onatvent_night ! has natural ventilation
240  ! been necessary/possible during the night
241 !
242 REAL, DIMENSION(:), INTENT(OUT) :: ph_bld_cool ! Sensible cooling energy demand
243  ! of the building [W m-2(bld)]
244 REAL, DIMENSION(:), INTENT(OUT) :: ph_bld_heat ! Heating energy demand
245  ! of the building [W m-2(bld)]
246 REAL, DIMENSION(:), INTENT(OUT) :: ple_bld_cool ! Latent cooling energy demand
247  ! of the building [W m-2(bld)]
248 REAL, DIMENSION(:), INTENT(OUT) :: ple_bld_heat ! Latent heating energy demand
249  ! of the building [W m-2(bld)]
250 REAL, DIMENSION(:), INTENT(OUT) :: pt_bld_cool ! Total cooling energy demand
251  ! of the building [W m-2(bld)]
252 REAL, DIMENSION(:), INTENT(OUT) :: phvac_cool ! Energy consumption of the cooling system
253  ! [W m-2(bld)]
254 REAL, DIMENSION(:), INTENT(OUT) :: pt_sys ! Supply air temperature [K]
255 REAL, DIMENSION(:), INTENT(OUT) :: pq_sys ! Supply air specific humidity [kg kg-1]
256 REAL, DIMENSION(:), INTENT(OUT) :: ph_waste ! Sensible waste heat from HVAC system
257  ! [W m-2(bld)]
258 REAL, DIMENSION(:), INTENT(OUT) :: ple_waste ! Latent waste heat from HVAC system
259  ! [W m-2(bld)]
260 REAL, DIMENSION(:), INTENT(OUT) :: pfan_power ! HVAC fan power
261 REAL, DIMENSION(:), INTENT(OUT) :: phvac_heat ! Energy consumption of the heating system
262  ! [W m-2(bld)]
263 !
264 REAL, DIMENSION(:), INTENT(OUT) :: pm_sys ! Actual HVAC mass flow rate
265  ! [kg s-1 m-2(bld)]
266 REAL, DIMENSION(:), INTENT(OUT) :: pcop ! COP of the cooling system
267 REAL, DIMENSION(:), INTENT(OUT) :: pcap_sys ! Actual capacity of the cooling system
268  ! [W m-2(bld)]
269 !
270 REAL, DIMENSION(:), INTENT(OUT) :: phu_bld ! Indoor relative humidity 0 < (-) < 1
271 REAL, DIMENSION(:), INTENT(IN) :: ptr_sw_win ! Solar radiation transmitted throught
272  ! windows [W m-2(bld)]
273 REAL, DIMENSION(:), INTENT(IN) :: pt_rad_ind ! Indoor mean radiant temperature [K]
274 !
275 REAL, DIMENSION(:), INTENT(OUT) :: pflx_bld_floor! Heat flux from indoor air to floor
276  ! [W m-2(bld)]
277 REAL, DIMENSION(:), INTENT(OUT) :: pflx_bld_mass ! Heat flux from indoor air to mass
278  ! [W m-2(bld)]
279 REAL, DIMENSION(:), INTENT(IN) :: pf_floor_mass ! View factor floor-mass
280 REAL, DIMENSION(:), INTENT(IN) :: pf_floor_wall ! View factor floor-wall
281 REAL, DIMENSION(:), INTENT(IN) :: pf_floor_win ! View factor floor-window
282 REAL, DIMENSION(:), INTENT(IN) :: pradht_in ! Indoor radiant heat transfer coefficient
283  ! [W K-1 m-2]
284 REAL, DIMENSION(:) , INTENT(IN) :: pn_floor ! Number of floors
285 REAL, DIMENSION(:) , INTENT(IN) :: pwall_o_bld ! Wall area [m2_wall/m2_bld]
286 REAL, DIMENSION(:) , INTENT(IN) :: pglaz_o_bld ! Window area [m2_win/m2_bld]
287 REAL, DIMENSION(:) , INTENT(IN) :: pmass_o_bld ! Mass area [m2_mass/m2_bld]
288 REAL, DIMENSION(:) , INTENT(IN) :: pfloor_hw_ratio ! H/W ratio of 1 floor level
289 REAL, DIMENSION(:) , INTENT(IN) :: pf_floor_roof ! View factor floor-roof
290 REAL, DIMENSION(:) , INTENT(IN) :: pf_mass_floor ! View factor mass-floor
291 REAL, DIMENSION(:) , INTENT(IN) :: pf_mass_wall ! View factor mass-wall
292 REAL, DIMENSION(:) , INTENT(IN) :: pf_mass_win ! View factor mass-window
293 REAL, DIMENSION(:) , INTENT(IN) :: prad_roof_mass ! Rad. fluxes between roof and mass
294 REAL, DIMENSION(:) , INTENT(IN) :: prad_roof_floor ! Rad. fluxes between roof and floor
295 REAL, DIMENSION(:) , INTENT(IN) :: prad_wall_mass ! Rad. fluxes between wall and mass
296 REAL, DIMENSION(:) , INTENT(IN) :: prad_wall_floor ! Rad. fluxes between wall and floor
297 REAL, DIMENSION(:) , INTENT(IN) :: prad_win_mass ! Rad. fluxes between wind. and mass
298 REAL, DIMENSION(:) , INTENT(IN) :: prad_win_floor ! Rad. fluxes between wind. and floor
299 REAL, DIMENSION(:) , INTENT(IN) :: pconv_roof_bld ! Conv. fluxes between roof and indoor air
300 REAL, DIMENSION(:) , INTENT(IN) :: pconv_wall_bld ! Conv. fluxes between wall and indoor air
301 REAL, DIMENSION(:) , INTENT(IN) :: pconv_win_bld ! Conv. fluxes between wind. and indoor air
302 REAL, DIMENSION(:) , INTENT(IN) :: pload_in_floor ! solar + int heat gain on floor W/m2 [floor]
303 REAL, DIMENSION(:) , INTENT(IN) :: pload_in_mass ! solar + int heat gain on floor W/m2 [mass]
304 !
305 !* 0.2 Declarations of local variables
306 !
307 INTEGER :: iroof ! Number of roof layers
308 INTEGER :: iwall ! Number of wall layers
309 !REAL :: ZTCOMF_MAX ! Maximum comfort temperature for nat.vent [K]
310 !
311 REAL, DIMENSION(SIZE(PTI_BLD)) :: zfan_ap ! Fan design pressure increase [Pa]
312 REAL, DIMENSION(SIZE(PTI_BLD)) :: zfan_eff ! Fan total efficiency
313 !
314 LOGICAL, DIMENSION(SIZE(PTI_BLD)):: gsched ! Day-night schedule flag
315  ! *to be transported to inputs*
316 !
317 REAL, DIMENSION(SIZE(PTI_BLD)) :: zf_night ! Reduction factor of int.gains at night
318 REAL, DIMENSION(SIZE(PTI_BLD)) :: zf_day ! Amplification factor of int.gains at daytime
319 !
320 REAL, DIMENSION(SIZE(PTI_BLD)):: zac_in_mass_cool, zac_in_floor_cool, &
321  zac_in_roof_cool, zac_in_wall_a_cool, &
322  zac_in_wall_b_cool, zac_in_win_cool
323 REAL, DIMENSION(SIZE(PTI_BLD)):: zac_in_mass_heat, zac_in_floor_heat, &
324  zac_in_roof_heat, zac_in_wall_a_heat, &
325  zac_in_wall_b_heat, zac_in_win_heat
326 !
327 REAL, DIMENSION(SIZE(PTI_BLD)):: zqin ! Internal heat gains [W m-2(bld)]
328 !
329 REAL, DIMENSION(SIZE(PTI_BLD)):: zv_vent ! Ventilation flow rate [m3 s-1 m-2(bld)]
330 REAL, DIMENSION(SIZE(PTI_BLD)):: zinf ! Infiltration flow rate [m3 s-1 m-2(bld)]
331 !
332 LOGICAL, DIMENSION(SIZE(PTI_BLD)):: gnat_vent ! Is Natural ventilation active ?
333 REAL, DIMENSION(SIZE(PTI_BLD)):: znat_vent ! Nat.vent airflow rate [m3 s-1 m-2(bld)]
334 REAL,DIMENSION(SIZE(PTI_BLD)) :: zti_bld ! Indoor air temperature at time step t + dt [K]
335 REAL,DIMENSION(SIZE(PTI_BLD)) :: zti_bld_open ! Indoor air temperature if windows opened
336 REAL,DIMENSION(SIZE(PTI_BLD)) :: zti_bld_closed! Indoor air temperature if windows closed
337 !
338 REAL, DIMENSION(SIZE(PTI_BLD)):: zqcool_target ! Specific humidity cooling setpoing [kg kg-1]
339 REAL, DIMENSION(SIZE(PTI_BLD)):: zqheat_target ! Specific humidity heating setpoing [kg kg-1]
340 !
341 REAL, DIMENSION(SIZE(PTI_BLD)):: zshr ! Rated sensible heat rate
342 REAL, DIMENSION(SIZE(PTI_BLD)):: zm_sys_rat ! Auxiliar mass flow rate [kg s-1 m-2(bld)]
343 !
344 REAL, DIMENSION(SIZE(PTI_BLD)):: zxmix ! Outdoor mixing fraction
345 REAL, DIMENSION(SIZE(PTI_BLD)):: zt_mix ! Mixing air temperature [K]
346 REAL, DIMENSION(SIZE(PTI_BLD)):: zq_mix ! Mixing air specific humidity [kg kg-1]
347 !
348 REAL,DIMENSION(SIZE(PTI_BLD)) :: zqi_bld ! Indoor air humidity at time step t + dt [K}
349 REAL, DIMENSION(SIZE(PTI_BLD)):: zwaste
350 !
351 REAL, DIMENSION(SIZE(PTI_BLD)):: zdqs_floor
352 REAL, DIMENSION(SIZE(PTI_BLD)):: zimb_floor
353 REAL, DIMENSION(SIZE(PTI_BLD)):: zdqs_mass
354 REAL, DIMENSION(SIZE(PTI_BLD)):: zimb_mass
355 REAL, DIMENSION(SIZE(PTI_BLD)):: zload_floor ! sum of solar and internal loads on floor
356 REAL, DIMENSION(SIZE(PTI_BLD)):: zload_mass ! sum of solar and internal loads on mass
357 REAL, DIMENSION(SIZE(PTI_BLD)):: zrad_floor_mass ! Rad. fluxes from floor to mass
358 REAL, DIMENSION(SIZE(PTI_BLD)):: zconv_floor_bld ! Conv. fluxes from floor to indoor air
359 REAL, DIMENSION(SIZE(PTI_BLD)):: zconv_mass_bld ! Conv. fluxes from mass to indoor air
360 REAL, DIMENSION(SIZE(PTI_BLD)):: zrhoi ! indoor air density
361 !
362 INTEGER :: jj ! Loop counter
363 REAL(KIND=JPRB) :: zhook_handle
364 !
365 !!REAL :: ZEXPL = 0.5 !explicit coefficient for internal temperature evol.
366 !!REAL :: ZIMPL = 0.5 !implicit coef..
367 !
368 !-------------------------------------------------------------------------------
369 IF (lhook) CALL dr_hook('BEM',0,zhook_handle)
370 !
371 !* 1. Initializations
372 ! ---------------
373 !
374 zrhoi(:) = pps(:) / (xrd * pti_bld(:) * ( 1.+((xrv/xrd)-1.)*pqi_bld(:) ) )
375 ! *Temperal definitions for nat.vent*
376 !ZTCOMF_MAX = 26. + 273.16
377 !
378 ! *Definitions
379 zfan_ap(:) = 600.0
380 zfan_eff(:) = 0.7
381 !
382 ! *Other calcs
383 iroof = SIZE(pt_roof,2)
384 iwall = SIZE(pt_wall_a,2)
385 !
386 !
387 ! initial condition of QI_BLD equivalent to 50% RH
388 IF (any(pqi_bld(:) <= 1e-6)) pqi_bld = 0.5 * qsat(pti_bld, pps)
389 !
390 ! *Temperal definitions for shedule*
391 gsched(:) = .false.
392 WHERE (gsched(:))
393  zf_night(:) = 0.8
394  zf_day(:) = 1.2
395 ELSE WHERE
396  zf_night(:) = 1.
397  zf_day(:) = 1.
398 END WHERE
399 !
400 ! *Int.gains schedule
401 !
402 zqin = pqin * pn_floor
403 WHERE (psuntime(:) > 0. .AND. psuntime(:) < 25200.) ! night between 0000 and 0700
404  zqin(:) = zqin(:) * zf_night(:)
405 ELSEWHERE
406  zqin(:) = zqin(:) * zf_day(:)
407 END WHERE
408 
409 ! *Change of units AC/H -> [m3 s-1 m-2(bld)]
410 zv_vent(:) = pv_vent(:) * pbld_height(:) / 3600.
411 zinf(:) = pinf(:) * pbld_height(:) / 3600.
412 !
413 !* 2. heat balance for building floor and mass
414 ! ----------------------------------------
415 !
416 !* 2.1 total load on the internal mass or floor
417 zload_floor(:) = (zqin(:) * pqin_frad(:) * (1.-pqin_flat(:)) + ptr_sw_win(:)) / (pmass_o_bld(:)+1.)
418 WHERE (pn_floor(:) > 1.)
419  zload_mass(:) = zload_floor(:)
420 ELSEWHERE
421  zload_mass(:) = 0.
422 ENDWHERE
423 !
424 !* 2.2 FLOOR HEAT BALANCE
425 !
426  CALL floor_layer_e_budget(pt_floor, ptstep, &
427  phc_floor, ptc_floor, pd_floor, &
428  pflx_bld_floor, zdqs_floor, zimb_floor,&
429  pf_floor_mass, pf_floor_wall, pf_floor_win,&
430  pf_floor_roof, pradht_in, &
431  pt_mass(:,1), prad_wall_floor, prad_roof_floor, &
432  prad_win_floor, pload_in_floor, pti_bld, zrad_floor_mass, zconv_floor_bld)
433 !
434 !* 2.3 MASS HEAT BALANCE
435 !
436  CALL mass_layer_e_budget(pt_mass, ptstep, &
437  phc_floor, ptc_floor, pd_floor/2., &
438  pflx_bld_mass, zdqs_mass, zimb_mass,&
439  pf_mass_wall, pf_mass_win,&
440  pf_mass_floor, pradht_in, &
441  prad_wall_mass, prad_roof_mass, &
442  prad_win_mass, pload_in_mass, pti_bld, &
443  zrad_floor_mass, zconv_mass_bld )
444 !
445 !
446 zac_in_wall_a_cool = chtc_vert_doe(pt_wall_a(:,iwall), ptcool_target)
447 zac_in_wall_b_cool = chtc_vert_doe(pt_wall_b(:,iwall), ptcool_target)
448 zac_in_win_cool = chtc_vert_doe(pt_win2, ptcool_target)
449 zac_in_mass_cool = chtc_vert_doe(pt_mass(:,1), ptcool_target)
450 zac_in_roof_cool = chtc_down_doe(pt_roof(:,iroof),ptcool_target)
451 zac_in_floor_cool = chtc_up_doe(pt_floor(:,1),ptcool_target)
452 
453 zac_in_wall_a_heat = chtc_vert_doe(pt_wall_a(:,iwall), ptheat_target)
454 zac_in_wall_b_heat = chtc_vert_doe(pt_wall_b(:,iwall), ptheat_target)
455 zac_in_win_heat = chtc_vert_doe(pt_win2, ptheat_target)
456 zac_in_mass_heat = chtc_vert_doe(pt_mass(:,1), ptheat_target)
457 zac_in_roof_heat = chtc_down_doe(pt_roof(:,iroof),ptheat_target)
458 zac_in_floor_heat = chtc_up_doe(pt_floor(:,1),ptheat_target)
459 
460 DO jj=1,SIZE(zac_in_win_cool)
461  zac_in_wall_a_cool(jj) = max(1.,zac_in_wall_a_cool(jj))
462  zac_in_wall_b_cool(jj) = max(1., zac_in_wall_b_cool(jj))
463  zac_in_win_cool(jj) = max(1., zac_in_win_cool(jj))
464  zac_in_mass_cool(jj) = max(1., zac_in_mass_cool(jj))
465  zac_in_roof_cool(jj) = max(1., zac_in_roof_cool(jj))
466  zac_in_floor_cool(jj) = max(1., zac_in_floor_cool(jj))
467 
468  zac_in_wall_a_heat(jj) = max(1.,zac_in_wall_a_heat(jj))
469  zac_in_wall_b_heat(jj) = max(1., zac_in_wall_b_heat(jj))
470  zac_in_win_heat(jj) = max(1., zac_in_win_heat(jj))
471  zac_in_mass_heat(jj) = max(1., zac_in_mass_heat(jj))
472  zac_in_roof_heat(jj) = max(1., zac_in_roof_heat(jj))
473  zac_in_floor_heat(jj) = max(1., zac_in_floor_heat(jj))
474 ENDDO
475 
476 !* 4. Indoor energy balance calculation
477 ! ---------------------------------
478 !
479 DO jj=1,SIZE(pt_canyon)
480  ! *first guess of indoor temperature
481 
482  zti_bld(jj) = pti_bld(jj) &
483  + ptstep/(zrhoi(jj) * xcpd * pbld_height(jj)) &
484  * ( pwall_o_bld(jj) * pconv_wall_bld(jj) &
485  + pglaz_o_bld(jj) * pconv_win_bld(jj) &
486  + pmass_o_bld(jj) * zconv_mass_bld(jj) &
487  + pconv_roof_bld(jj) &
488  + zconv_floor_bld(jj) &
489  + zqin(jj) * (1 - pqin_frad(jj)) * (1 - pqin_flat(jj)) )
490  !
491  !################################################################################
492  ! *is natural surventilation active at the current time step ?
493  !---------------------------------------------------------------------------------
494  !
495  ! *no surventilation possible
496 
497  IF (hnatvent(jj)=='NONE') THEN
498  !
499  gnat_vent(jj) = .false.
500  !
501  ! *automatic management of surventilation
502  ELSEIF (hnatvent(jj)=='AUTO' .OR. hnatvent(jj)=='MECH') THEN
503  !
504  IF (mod(psuntime(jj), 3600.) .LT. ptstep) THEN
505  !
506  IF ( pti_bld(jj).GT. pt_canyon(jj) + 1 ) THEN ! condition to enable the
507  IF (hnatvent(jj)=='AUTO') THEN
508  ! natural surventilation rate calculation (window opening)
509  CALL get_nat_vent(pti_bld(jj), pt_canyon(jj), pu_canyon(jj), pgr(jj), &
510  pfloor_hw_ratio(jj), pbld_height(jj), znat_vent(jj))
511  ELSE IF (hnatvent(jj)=='MECH') THEN
512  ! mechanical surventilation rate calculation : 5 volumes/hour
513  znat_vent(jj) = 5.0*pbld_height(jj)/3600.
514  END IF
515  !
516  zti_bld_open(jj) = zti_bld(jj) &
517  + znat_vent(jj) * ptstep/pbld_height(jj) * (pt_canyon(jj) - pti_bld(jj))
518  zti_bld_closed(jj) = zti_bld(jj) &
519  + (zinf(jj) + zv_vent(jj)) * ptstep/pbld_height(jj) * (pt_canyon(jj) - pti_bld(jj))
520  !
521  gnat_vent(jj) = (zti_bld_open(jj) <= ptcool_target(jj) .AND. &
522  zti_bld_open(jj) < zti_bld_closed(jj) .AND. &
523  zti_bld_open(jj) > ptheat_target(jj) + 4.)
524  !
525  ELSE
526  gnat_vent(jj) = .false.
527  ENDIF
528  onatvent_night(jj) = gnat_vent(jj)
529  ELSE
530  gnat_vent(jj) = onatvent_night(jj)
531  ENDIF
532  !
533  ! *manual management of surventilation
534  ELSEIF (hnatvent(jj)=='MANU') THEN
535  !
536  onatvent_night(jj) = onatvent_night(jj) .AND. &
537  .NOT. ( psuntime(jj) > 5.*3600 .AND. psuntime(jj) < 18.*3600 )
538  !
539  gnat_vent(jj) = ( psuntime(jj) > 18.*3600. .AND. psuntime(jj) < 21.*3600. &
540  .AND. pt_canyon(jj) < pti_bld(jj)+2. &
541  .AND. pt_canyon(jj) > ptheat_target(jj) &
542  .AND. ( pti_bld(jj) > ptheat_target(jj)+5. &
543  .OR. pti_bld(jj) == ptcool_target(jj) ) )
544  gnat_vent(jj) = gnat_vent(jj) .OR. onatvent_night(jj)
545  !
546  ENDIF
547  !
548  ! Decicion about natural surventilation OK
549  !################################################################################
550  !
551  !
552  !################################################################################
553  ! COMPUTE ENERGY DEMAND
554  !---------------------------------------------------------------------------------
555 
556  ! *If natural surventilation ACTIVE
557  IF (gnat_vent(jj)) THEN
558  !
559  CALL get_nat_vent(pti_bld(jj), pt_canyon(jj), pu_canyon(jj), pgr(jj), &
560  pfloor_hw_ratio(jj), pbld_height(jj), znat_vent(jj) )
561  !
562  zv_vent(jj) = 0.
563  zinf(jj) = 0.
564  !
565  ph_bld_cool(jj) = 0.0 ! No HVAC consumption
566  ph_bld_heat(jj) = 0.0
567  ple_bld_cool(jj) = 0.0 ! No HVAC consumption
568  ple_bld_heat(jj) = 0.0
569  !
570  pt_bld_cool(jj) = 0.0 ! No HVAC consumption
571  phvac_cool(jj) = 0.0
572  pt_sys(jj) = pti_bld(jj) ! No mechanical ventilation
573  pq_sys(jj) = pqi_bld(jj) !
574  ph_waste(jj) = 0.0
575  ple_waste(jj) = 0.0
576  pfan_power(jj) = 0.0
577  phvac_heat(jj) = 0.0
578  !
579  pm_sys(jj) = 0.0
580  pcop(jj) = 0.0
581  pcap_sys(jj) = 0.0
582  !
583  ! *If natural surventilation INACTIVE
584  ELSE
585  !
586  znat_vent(jj) = 0.
587  !
588  ! ------------------------------------------------
589  ! * Building energy demand for heating and cooling
590  ! ------------------------------------------------
591  !
592  ph_bld_cool(jj) = pwall_o_bld(jj)/2. * (zac_in_wall_a_cool(jj) * (pt_wall_a(jj,iwall) - ptcool_target(jj)) &
593  + zac_in_wall_b_cool(jj) * (pt_wall_b(jj,iwall) - ptcool_target(jj))) &
594  + pglaz_o_bld(jj) * zac_in_win_cool(jj) * (pt_win2(jj) - ptcool_target(jj)) &
595  + zac_in_mass_cool(jj)* pmass_o_bld(jj) * (pt_mass(jj,1) - ptcool_target(jj)) &
596  + zac_in_roof_cool(jj) * (pt_roof(jj,iroof) - ptcool_target(jj)) &
597  + zac_in_floor_cool(jj) * (pt_floor(jj,1) - ptcool_target(jj)) &
598  + zqin(jj) * (1 - pqin_frad(jj)) * (1 - pqin_flat(jj)) &
599  + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) * xcpd * (pt_canyon(jj) - ptcool_target(jj))
600  !
601  ph_bld_heat(jj) = - ( pwall_o_bld(jj)/2. * (zac_in_wall_a_heat(jj) * (pt_wall_a(jj,iwall) - ptheat_target(jj)) &
602  +zac_in_wall_b_heat(jj) * (pt_wall_b(jj,iwall) - ptheat_target(jj))) &
603  + pglaz_o_bld(jj) * zac_in_win_heat(jj) * (pt_win2(jj) - ptheat_target(jj)) &
604  + zac_in_mass_heat(jj)* pmass_o_bld(jj) * (pt_mass(jj,1) - ptheat_target(jj)) &
605  + zac_in_roof_heat(jj) * (pt_roof(jj,iroof) - ptheat_target(jj)) &
606  + zac_in_floor_heat(jj) * (pt_floor(jj,1) - ptheat_target(jj)) &
607  + zqin(jj) * (1 - pqin_frad(jj))* (1 - pqin_flat(jj)) &
608  + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) * xcpd * (pt_canyon(jj) - ptheat_target(jj)))
609  !
610 
611  zqcool_target(jj) = 0.62198 * phr_target(jj) * psat(ptcool_target(jj)) / &
612  (pps(jj)- phr_target(jj) * psat(ptcool_target(jj)))
613  !
614  ple_bld_cool(jj) = zqin(jj) * pqin_flat(jj) &
615  + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) * xlvtt * (pq_canyon(jj) - zqcool_target(jj))
616  !
617 
618  zqheat_target(jj) = 0.62198 * phr_target(jj) * psat(ptheat_target(jj)) / &
619  (pps(jj)- phr_target(jj) * psat(ptheat_target(jj)))
620  !
621  ple_bld_heat(jj) = zqin(jj) * pqin_flat(jj) &
622  + (zinf(jj) + zv_vent(jj)) * zrhoi(jj) * xlvtt * (pq_canyon(jj) - zqheat_target(jj))
623  !
624  ! * Autosize calculations
625  !
626  IF (oautosize .AND. kday==15) THEN
627  !
628  IF (ph_bld_cool(jj) > paux_max(jj)) THEN
629  !
630  paux_max(jj) = ph_bld_cool(jj)
631  !
632  ! Cooling coil sensible heat rate
633  zshr(jj) = min(xcpd * (ptcool_target(jj) - pt_adp(jj)) / &
634  (enth_fn_t_q(ptcool_target(jj),zqcool_target(jj)) - &
635  enth_fn_t_q(pt_adp(jj),qsat(pt_adp(jj),pps(jj)))), 1.)
636  ! Cooling Coil Capacity [W m-2(bld)]
637  pcap_sys_rat(jj) = ph_bld_cool(jj) / zshr(jj)
638  !
639  ! Cooling rated air flow rate [kg s-1 m-2(bld)]
640  zm_sys_rat(jj) = ph_bld_cool(jj) / xcpd / (ptcool_target(jj)-(14.0+273.16))
641  IF (zm_sys_rat(jj) > pm_sys_rat(jj)) pm_sys_rat(jj) = zm_sys_rat(jj)
642  !
643  ! Impose condition
644  IF (pm_sys_rat(jj)/zrhoi(jj)/pcap_sys_rat(jj) < 0.00004027) THEN
645  pcap_sys_rat(jj) = pm_sys_rat(jj)/zrhoi(jj)/0.00004027
646  ELSE IF (pm_sys_rat(jj)/zrhoi(jj)/pcap_sys_rat(jj) > 0.00006041) THEN
647  pcap_sys_rat(jj) = pm_sys_rat(jj)/zrhoi(jj)/0.00006041
648  END IF
649  !
650  END IF
651  !
652  END IF
653  !
654  ! * END Autosize calculations
655  !
656  ! * system efficiency
657  ! ...................
658  !
659  pm_sys(jj) = pm_sys_rat(jj)
660  pcop(jj) = pcop_rat(jj)
661  pcap_sys(jj) = pcap_sys_rat(jj)
662  !
663  ! * Mixing conditions
664  ! .................
665  !
666  zxmix(jj) = zv_vent(jj) * zrhoi(jj) / pm_sys(jj)
667  zt_mix(jj) = zxmix(jj) * pt_canyon(jj) + (1.-zxmix(jj)) * pti_bld(jj)
668  zq_mix(jj) = zxmix(jj) * pq_canyon(jj) + (1.-zxmix(jj)) * pqi_bld(jj)
669  !
670  ! ---------------------------------------------
671  ! * COOLING system : Performance and Waste heat
672  ! ---------------------------------------------
673  !
674  IF (ph_bld_cool(jj) >= 0.0) THEN
675  !
676  ! *ideal system
677  IF (hcool_coil=='IDEAL') THEN
678  !
679  pt_bld_cool(jj) = ph_bld_cool(jj) + ple_bld_cool(jj)
680  !desactivation of LE_BLD_COOL impact on HVAC_COOL calculation
681  !following too much impact in VURCA simulation (23/01/2012)
682  !this would be the case for a vaporization system !
683  !PHVAC_COOL (JJ) = PT_BLD_COOL(JJ) / PCOP_RAT(JJ)
684  phvac_cool(jj) = ph_bld_cool(jj) / pcop_rat(jj)
685  IF (phvac_cool(jj) < 0.0) phvac_cool(jj) = 0.0
686  !
687  pt_sys(jj) = zt_mix(jj) - ph_bld_cool(jj) /pm_sys(jj) / xcpd
688  !PQ_SYS(JJ) = ZQ_MIX(JJ) - PLE_BLD_COOL(JJ) / PM_SYS(JJ)/ XLVTT
689  !desactivation following too much impact in VURCA simulation
690  !(23/01/2012)
691  pq_sys(jj) = zq_mix(jj)
692  !
693  ph_waste(jj) = phvac_cool(jj) * (1.+pcop_rat(jj)) * (1. - pf_water_cond(jj))
694  ple_waste(jj) = phvac_cool(jj) * (1.+pcop_rat(jj)) * pf_water_cond(jj)
695  !
696  ! *real system
697  ELSEIF (hcool_coil=='DXCOIL') THEN
698  !
699  CALL dx_air_cooling_coil_cv(pt_canyon(jj), pq_canyon(jj), pps(jj), &
700  zrhoi(jj), zt_mix(jj), zq_mix(jj), pcop_rat(jj), &
701  pcap_sys_rat(jj), pt_adp(jj), pf_water_cond(jj), &
702  pm_sys(jj), ph_bld_cool(jj), ph_waste(jj), ple_waste(jj), &
703  pcop(jj), pcap_sys(jj), pt_sys(jj), pq_sys(jj), &
704  phvac_cool(jj), pt_bld_cool(jj) )
705  !
706  ENDIF !end type of cooling system
707 
708  !!! case of system without atmospheric releases. I-e releases in soil/water F_WATER_COND < 0
709  IF (pf_water_cond(jj) < 0) THEN
710  ph_waste(jj) = 0.
711  ple_waste(jj) = 0.
712  ENDIF
713  !!!!
714  !
715  ! From EP Engineering Reference (p. 647)
716  pfan_power(jj) = pm_sys(jj) * zfan_ap(jj) * zfan_eff(jj) * zrhoi(jj)
717  !
718  ph_bld_heat(jj) = 0.0
719  ple_bld_heat(jj) = 0.0
720  phvac_heat(jj) = 0.0
721  !
722  ! ---------------------------------------------
723  ! * HEATING system : Performance and Waste heat
724  ! ---------------------------------------------
725  !
726  ELSE IF (ph_bld_heat(jj) > 0.0) THEN
727  !
728  ! *specific computation for real heating system
729  IF (hheat_coil .EQ. 'FINCAP') THEN
730  IF (ph_bld_heat(jj) > pcap_sys_heat(jj)) ph_bld_heat(jj) = pcap_sys_heat(jj)
731  END IF
732  !
733  pt_sys(jj) = zt_mix(jj) + ph_bld_heat(jj) / pm_sys(jj) / xcpd
734  pq_sys(jj) = zq_mix(jj)
735  !
736  phvac_heat(jj) = ph_bld_heat(jj) / peff_heat(jj)
737  ph_waste(jj) = phvac_heat(jj) - ph_bld_heat(jj)
738  ple_waste(jj) = 0.0
739  ph_bld_cool(jj) = 0.0
740  ple_bld_cool(jj) = 0.0
741  pt_bld_cool(jj) = 0.0
742  phvac_cool(jj) = 0.0
743 ! From EP Engineering Reference (p. 647)
744  pfan_power(jj) = pm_sys(jj)*zfan_ap(jj)*(zfan_eff(jj)*zrhoi(jj))
745  !
746  ! ------------------------------
747  ! * NEITHEIR COOLING NOR HEATING
748  ! ------------------------------
749  !
750  ELSE
751  !
752  ph_bld_cool(jj) = 0.0
753  ph_bld_heat(jj) = 0.0
754  ple_bld_cool(jj) = 0.0
755  ple_bld_heat(jj) = 0.0
756  !
757  pt_bld_cool(jj) = 0.0
758  phvac_cool(jj) = 0.0
759  pt_sys(jj) = zt_mix(jj)
760  pq_sys(jj) = zq_mix(jj)
761  ph_waste(jj) = 0.0
762  ple_waste(jj) = 0.0
763  pfan_power(jj) = 0.0
764  phvac_heat(jj) = 0.0
765  !
766  END IF !end for heating/cooling sytem
767  !
768  END IF
769  !
770  !---------------------------------------------------------------------------------
771  ! ENERGY DEMAND COMPUTED
772  !################################################################################
773 ENDDO
774 !
775 !---------------------------------------------------
776 ! EVOLUTION OF THE INTERNAL TEMPERATURE AND HUMIDITY
777 !###################################################
778 !
779 zti_bld(:) = ( zti_bld(:) + ptstep/pbld_height(:) * &
780  ((zinf(:) + znat_vent(:)) * (pt_canyon(:) ) &
781  + pm_sys(:) / zrhoi(:) * (pt_sys(:) ) ))&
782  / (1. + ptstep/pbld_height(:)* &
783  (zinf(:) + znat_vent(:) + pm_sys(:) / zrhoi(:)) )
784 zqi_bld(:) = ( pqi_bld(:) + ptstep/pbld_height(:) * &
785  ( zqin(:) * pqin_flat(:) / ( zrhoi(:) * xlvtt) &
786  + (zinf(:) + znat_vent(:)) * (pq_canyon(:) ) &
787  + pm_sys(:) / zrhoi(:) * (pq_sys(:) ) ))&
788  / (1. + ptstep/pbld_height(:)* &
789  (zinf(:) + znat_vent(:) + pm_sys(:) / zrhoi(:)) )
790 !
791 !
792 ! Update variables
793 pti_bld(:) = zti_bld(:)
794 pqi_bld(:) = zqi_bld(:)
795 
796 
797 !
798 ! Waste heat due to infiltration/ventilation
799 zwaste(:) = (zinf(:)+zv_vent(:)+znat_vent(:)) * zrhoi(:)
800 ph_waste(:) = ph_waste(:) + zwaste(:) * xcpd * (pti_bld(:) - pt_canyon(:))
801 ple_waste(:) = ple_waste(:) + zwaste(:) * xlvtt * (pqi_bld(:) - pq_canyon(:))
802 !
803 !
804 IF (lhook) CALL dr_hook('BEM',1,zhook_handle)
805 !
806  CONTAINS
807 !
808 SUBROUTINE get_nat_vent(PPTI_BLD, PPT_CANYON, PPU_CANYON, PPGR, &
809  pf_aux, ppbld_height, pnat_vent)
810 !
811 IMPLICIT NONE
812 !
813 REAL, INTENT(IN) :: ppti_bld
814 REAL, INTENT(IN) :: ppt_canyon
815 REAL, INTENT(IN) :: ppu_canyon
816 REAL, INTENT(IN) :: ppgr
817 REAL, INTENT(IN) :: pf_aux
818 REAL, INTENT(IN) :: ppbld_height
819 REAL, INTENT(OUT) :: pnat_vent
820 REAL(KIND=JPRB) :: zhook_handle
821 !
822 IF (lhook) CALL dr_hook('BEM:GET_NAT_VENT',0,zhook_handle)
823 !
824 pnat_vent = xg * (ppti_bld - ppt_canyon)
825 IF (pnat_vent .LT. 0.) THEN ! exceptional case with MANU ventilation system
826  pnat_vent= ppbld_height/3600. !minimum value
827 ELSE
828  pnat_vent = 1./3. * (pnat_vent/ppt_canyon)**(1./2.) &
829  * (1.5 + ppti_bld/pnat_vent * 1./2. * ppu_canyon**2*0.1)**(3./2.) &
830  * ppgr * pf_aux / 1.5 / 2.
831  pnat_vent = min(pnat_vent, 5.0*ppbld_height/3600.)
832 ENDIF
833 !
834 IF (lhook) CALL dr_hook('BEM:GET_NAT_VENT',1,zhook_handle)
835 !
836 END SUBROUTINE get_nat_vent
837 !
838 END SUBROUTINE bem
real function, dimension(size(pts)) chtc_down_doe(PTS, PTA)
subroutine bem(PTSTEP, PSUNTIME, HCOOL_COIL, HHEAT_COIL, OAUTOSIZE, KDAY, HNATVENT, PPS, PRHOA, PT_CANYON, PQ_CANYON, PU_CANYON, PT_ROOF, PT_WALL_A, PT_WALL_B, PBLD, PBLD_HEIGHT, PWALL_O_HOR, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PT_WIN2, PGR, PQIN, PQIN_FRAD, PQIN_FLAT, PEFF_HEAT, PINF, PTCOOL_TARGET, PTHEAT_TARGET, PHR_TARGET, PF_WATER_COND, PV_VENT, PCAP_SYS_HEAT, PT_ADP, PCOP_RAT, PAUX_MAX, PT_FLOOR, PT_MASS, PTI_BLD, PQI_BLD, PCAP_SYS_RAT, PM_SYS_RAT, ONATVENT_NIGHT, PH_BLD_COOL, PH_BLD_HEAT, PLE_BLD_COOL, PLE_BLD_HEAT, PT_BLD_COOL, PHVAC_COOL, PT_SYS, PQ_SYS, PH_WASTE, PLE_WASTE, PFAN_POWER, PHVAC_HEAT, PM_SYS, PCOP, PCAP_SYS, PHU_BLD, PTR_SW_WIN, PT_RAD_IND, PFLX_BLD_FLOOR, PFLX_BLD_MASS, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PRADHT_IN, PN_FLOOR, PWALL_O_BLD, PGLAZ_O_BLD, PMASS_O_BLD, PFLOOR_HW_RATIO, PF_FLOOR_ROOF, PF_MASS_FLOOR, PF_MASS_WALL, PF_MASS_WIN, PRAD_ROOF_MASS, PRAD_ROOF_FLOOR, PRAD_WALL_MASS, PRAD_WALL_FLOOR, PRAD_WIN_MASS, PRAD_WIN_FLOOR, PCONV_ROOF_BLD, PCONV_WALL_BLD, PCONV_WIN_BLD, PLOAD_IN_FLOOR, PLOAD_IN_MASS)
Definition: bem.F90:6
subroutine get_nat_vent(PPTI_BLD, PPT_CANYON, PPU_CANYON, PPGR, PF_AUX, PPBLD_HEIGHT, PNAT_VENT)
Definition: bem.F90:808
subroutine mass_layer_e_budget(PT_MASS, PTSTEP, PHC_MASS, PTC_MASS, PD_MASS, PFLX_BLD_MASS, PDQS_MASS, PIMB_MASS, PF_MASS_WALL, PF_MASS_WIN, PF_MASS_FLOOR, PRADHT_IN, PRAD_WALL_MASS, PRAD_ROOF_MASS, PRAD_WIN_MASS, PLOAD_MASS, PTI_BLD, PRAD_FLOOR_MASS, PCONV_MASS_BLD)
subroutine dx_air_cooling_coil_cv(PT_CANYON, PQ_CANYON, PPS, PRHOA, PT_IN, PQ_IN, PCOP_RAT, PCAP_SYS_RAT, PT_ADP, PF_WATER_COND, PM_SYS, PH_BLD_COOL, PH_WASTE, PLE_WASTE, PCOP, PCAP_SYS, PT_OUT, PQ_OUT, PDX_POWER, PT_BLD_COOL)
subroutine floor_layer_e_budget(PT_FLOOR, PTSTEP, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PFLX_BLD_FLOOR, PDQS_FLOOR, PIMB_FLOOR, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PF_FLOOR_ROOF, PRADHT_IN, PTS_MASS, PRAD_WALL_FLOOR, PRAD_ROOF_FLOOR, PRAD_WIN_FLOOR, PLOAD_FLOOR, PTI_BLD, PRAD_FLOOR_MASS, PCONV_FLOOR_BLD)