Coverage for teaser/logic/buildingobjects/calculation/three_element.py: 97%
434 statements
« prev ^ index » next coverage.py v7.4.4, created at 2025-04-29 16:01 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2025-04-29 16:01 +0000
1# created January 2017
3from __future__ import division
4import math
5import random
6import warnings
9class ThreeElement(object):
10 """This class contains attributes and functions for three element model
12 This model adds one further element for the floor plate. Long-term effects
13 dominate the excitation of the floor plate and thus the excitation
14 differs from excitation of outer walls. Thus the model distinguishes
15 between internal thermal masses and exterior walls divided into those
16 who are exposed to the sun and ground plates. While exterior walls
17 contribute to heat transfer to the ambient, adiabatic
18 conditions apply to interior walls. This approach allows considering the
19 dynamic behaviour induced by internal heat storage. This class calculates
20 and holds all attributes given in documentation.
22 It treats Rooftops and OuterWalls as one type of outer
23 walls and distinguishes GroundFloors as a separately resulting in two
24 RC-combination for these types.
26 Depending on the chosen method it will consider an extra resistance for
27 windows or merge all windows into the RC-Combination for outer walls.
29 Parameters
30 ----------
31 thermal_zone: ThermalZone()
32 TEASER instance of ThermalZone
33 merge_windows : boolean
34 True for merging windows into the outer wall's RC-combination,
35 False for separate resistance for window, default is False. (Only
36 supported for IBPSA)
37 t_bt : float [d]
38 Time constant according to VDI 6007 (default t_bt = 5)
39 t_bt_layer : float [d]
40 Time constant according to VDI 6007 for aggragation of layers (default t_bt = 7)
42 Attributes
43 ----------
44 Interior Walls
46 area_iw : float [m2]
47 Area of all interior walls.
48 alpha_conv_inner_iw : float [W/(m2K)]
49 Area-weighted convective coefficient of heat transfer of interior
50 walls facing the inside of this thermal zone.
51 alpha_rad_inner_iw : float [W/(m2K)]
52 Area-weighted radiative coefficient of heat transfer of interior
53 walls facing the inside of this thermal zone.
54 alpha_comb_inner_iw : float [W/(m2K)]
55 Area-weighted combined coefficient of heat transfer of interior walls
56 facing the inside of this thermal zone.
57 alpha_conv_outer_iw : float [W/(m2K)]
58 Area-weighted convective coefficient of heat transfer of interior
59 walls facing the adjacent thermal zone. (Currently not supported)
60 alpha_rad_outer_iw : float [W/(m2K)]
61 Area-weighted radiative coefficient of heat transfer of interior
62 walls facing the adjacent thermal zone. (Currently not supported)
63 alpha_comb_outer_iw : float [W/(m2K)]
64 Area-weighted combined coefficient of heat transfer of interior walls
65 facing the adjacent thermal zone. (Currently not supported)
66 ua_value_iw : float [W/K]
67 U-Value times interior wall area. (Does not take adjacent thermal
68 zones into account)
69 r_conv_inner_iw : float [K/W]
70 Sum of convective resistances for all interior walls
71 facing the inside of this thermal zone.
72 r_rad_inner_iw : float [K/W]
73 Sum of radiative resistances for all interior walls facing the
74 inside of this thermal zone
75 r_comb_inner_iw : float [K/W]
76 Sum of combined resistances for all interior walls facing the
77 inside of this thermal zone
78 r1_iw : float [K/W]
79 Lumped resistance of interior walls no heat transfer coefficients for
80 convection and radiation are accounted in this resistance.
81 c1_iw : float [J/K]
82 Lumped capacity of interior walls
84 Outer Walls (OuterWall, Rooftop)
86 area_ow : float [m2]
87 Area of all outer walls (OuterWall, Rooftop).
88 alpha_conv_inner_ow : float [W/(m2K)]
89 Area-weighted convective coefficient of heat transfer of outer walls
90 facing the inside of this thermal zone (OuterWall, Rooftop).
91 alpha_rad_inner_ow : float [W/(m2K)]
92 Area-weighted radiative coefficient of heat transfer of outer walls
93 facing the inside of this thermal zone (OuterWall, Rooftop).
94 alpha_comb_inner_ow : float [W/(m2K)]
95 Area-weighted combined coefficient of heat transfer of outer walls
96 facing the inside of this thermal zone (OuterWall, Rooftop).
97 alpha_conv_outer_ow : float [W/(m2K)]
98 Area-weighted convective coefficient of heat transfer of outer walls
99 facing the ambient (OuterWall, Rooftop).
100 alpha_rad_outer_ow : float [W/(m2K)]
101 Area-weighted radiative coefficient of heat transfer of outer walls
102 facing the ambient (OuterWall, Rooftop).
103 alpha_comb_outer_ow : float [W/(m2K)]
104 Area-weighted combined coefficient of heat transfer of outer walls
105 facing the ambient (OuterWall, Rooftop).
106 ua_value_ow : float [W/K]
107 U-Value times outer wall area (OuterWall, Rooftop).
108 r_conv_inner_ow : float [K/W]
109 Sum of convective resistances for all outer walls facing the
110 inside of this thermal zone (OuterWall, Rooftop).
111 r_rad_inner_ow : float [K/W]
112 Sum of radiative resistances for all outer walls facing the
113 inside of this thermal zone (OuterWall, Rooftop).
114 r_comb_inner_ow : float [K/W]
115 Sum of combined resistances for all outer walls facing the
116 inside of this thermal zone (OuterWall, Rooftop).
117 r_conv_outer_ow : float [K/W]
118 Sum of convective resistances for all outer walls facing the
119 ambient (OuterWall, Rooftop).
120 r_rad_outer_ow : float [K/W]
121 Sum of radiative resistances for all outer walls facing the
122 ambient (OuterWall, Rooftop).
123 r_comb_outer_ow : float [K/W]
124 Sum of combined resistances for all outer walls facing the
125 ambient (OuterWall, Rooftop).
126 r1_ow : float [K/W]
127 Lumped resistance of outer walls no heat transfer coefficients for
128 convection and radiation are accounted in this resistance (OuterWall,
129 Rooftop).
130 r_rest_ow : float [K/W]
131 Lumped remaining resistance of outer walls between r1_ow and c1_ow no
132 heat transfer coefficients for convection and radiation are accounted
133 in this resistance (OuterWall, Rooftop).
134 c1_ow : float [J/K]
135 Lumped capacity of outer walls (OuterWall, Rooftop).
136 weightfactor_ow : list of floats
137 Weightfactors of outer walls (UA-Value of walls with same orientation
138 and tilt divided by ua_value_ow) (OuterWall, Rooftop)
139 outer_wall_areas : list of floats [m2]
140 Area of all outer walls in one list (OuterWall, Rooftop).
141 ir_emissivity_outer_ow : float
142 Area-weighted ir emissivity of outer wall facing the ambient (OuterWall,
143 Rooftop).
144 ir_emissivity_inner_ow : float
145 Area-weighted ir emissivity of outer walls facing the thermal zone
146 (OuterWall, Rooftop).
147 solar_absorp_ow : float
148 Area-weighted solar absorption of outer walls facing the ambient
149 (OuterWall, Rooftop).
151 Ground Floors
153 area_gf : float [m2]
154 Area of all ground floors.
155 alpha_conv_inner_gf : float [W/(m2K)]
156 Area-weighted convective coefficient of heat transfer of ground floors
157 facing the inside of this thermal zone.
158 alpha_rad_inner_gf : float [W/(m2K)]
159 Area-weighted radiative coefficient of heat transfer of ground floors
160 facing the inside of this thermal zone.
161 alpha_comb_inner_gf : float [W/(m2K)]
162 Area-weighted combined coefficient of heat transfer of ground floors
163 facing the inside of this thermal zone.
164 ua_value_gf : float [W/K]
165 U-Value times ground floor area.
166 r_conv_inner_gf : float [K/W]
167 Sum of convective resistances for all ground floors facing the
168 inside of this thermal zone.
169 r_rad_inner_gf : float [K/W]
170 Sum of radiative resistances for all ground floors facing the
171 inside of this thermal zone.
172 r_comb_inner_gf : float [K/W]
173 Sum of combined resistances for all ground floors facing the
174 inside of this thermal zone.
175 r1_gf : float [K/W]
176 Lumped resistance of ground floors no heat transfer coefficients for
177 convection and radiation are accounted in this resistance.
178 r_rest_gf : float [K/W]
179 Lumped remaining resistance of ground floors between r1_gf and c1_gf no
180 heat transfer coefficients for convection and radiation are accounted
181 in this resistance.
182 c1_gf : float [J/K]
183 Lumped capacity of ground floors.
184 weightfactor_gf : float
185 Weightfactor of ground floors (UA-Value of walls with same orientation
186 and tilt divided by ua_value_gf)
187 ground_floor_area : float [m2]
188 Area of all ground floors.
189 r_rad_gf_iw : float [K/W]
190 Resistance for radiative heat transfer between walls.
191 TODO: needs to be checked
192 ir_emissivity_inner_gf : float
193 Area-weighted ir emissivity of ground floors facing the thermal zone.
195 Windows
197 area_win : float [m2]
198 Area of all windows.
199 alpha_conv_inner_win : float [W/(m2K)]
200 Area-weighted convective coefficient of heat transfer of windows
201 facing the inside of this thermal zone.
202 alpha_rad_inner_win : float [W/(m2K)]
203 Area-weighted radiative coefficient of heat transfer of windows
204 facing the inside of this thermal zone.
205 alpha_comb_inner_win : float [W/(m2K)]
206 Area-weighted combined coefficient of heat transfer of windows facing
207 the inside of this thermal zone.
208 ratio_conv_rad_inner_win : float [-]
209 Ratio for windows between convective and radiative heat emission,
210 given in VDI 6007-3
211 alpha_conv_outer_win : float [W/(m2K)]
212 Area-weighted convective coefficient of heat transfer of windows
213 facing the ambient.
214 alpha_rad_outer_win : float [W/(m2K)]
215 Area-weighted radiative coefficient of heat transfer of windows
216 facing the ambient.
217 alpha_comb_outer_win : float [W/(m2K)]
218 Area-weighted combined coefficient of heat transfer of windows facing
219 the ambient.
220 ua_value_win : float [W/K]
221 U-Value times outer wall area.
222 u_value_win : float [W/(m2K)]
223 Area weighted U-Value of windows.
224 r_conv_inner_win : float [K/W]
225 Sum of convective resistances for all windows facing the
226 inside of this thermal zone.
227 r_rad_inner_win : float [K/W]
228 Sum of radiative resistances for all windows facing the
229 inside of this thermal zone.
230 r_comb_inner_win : float [K/W]
231 Sum of combined resistances for all windows facing the
232 inside of this thermal zone.
233 r_conv_outer_win : float [K/W]
234 Sum of convective resistances for all windows facing the
235 ambient.
236 r_rad_outer_win : float [K/W]
237 Sum of radiative resistances for all windows facing the
238 ambient.
239 r_comb_outer_win : float [K/W]
240 Sum of combined resistances for all windows facing the
241 ambient.
242 r1_win : float [K/W]
243 Lumped resistance of windows, no heat transfer coefficients for
244 convection and radiation are accounted in this resistance.
245 weightfactor_win : list of floats
246 Weightfactors of windows (UA-Value of windows with same orientation
247 and tilt divided by ua_value_win or ua_value_win+ua_value_ow,
248 depending if windows is lumped/merged into the walls or not)
249 window_areas : list of floats [m2]
250 Area of all windows in one list, if the windows are merged into the
251 outer wall this list will be full of zeros
252 transparent_areas : list of floats [m2]
253 Area of all transparent elements (most likely windows) in one list,
254 this list will be always filled with the areas, independent if
255 windows are merged into walls or not.
256 solar_absorp_win : float
257 Area-weighted solar absorption for windows. (typically 0.0)
258 ir_emissivity_win : float
259 Area-weighted ir_emissivity for windows. Can be used for windows
260 facing the thermal zone and the ambient.
261 weighted_g_value : float
262 Area-weighted g-Value of all windows.
263 shading_max_irr : list of float [W/m2]
264 Threshold value above which the sunblind becomes active for the whole zone.
265 Threshold regards to the incoming irradiation level with the window direction.
266 This value does not account for heat flux due to the outside temperature.
267 shading_g_total : list of float
268 Factor representing how much of the actual solar irradiation goes through
269 the sunblind and enters the window element, for the case, that the sunblind is
270 activated. Defaults to 1, i.e. no shading is active.
272 Misc values:
274 alpha_rad_inner_mean : float [W/(m2K)]
275 Area-weighted radiative coefficient of all surfaces facing the
276 inside of this thermal zone (OuterWalls, Windows, InnerWalls, ...).
277 alpha_rad_outer_mean : float [W/(m2K)]
278 Area-weighted radiative coefficient of all surfaces facing the
279 ambient (OuterWalls, Windows, ...).
280 heat_load : [W]
281 Static heat load of the thermal zone.
282 heat_load_outside_factor : float [W/K]
283 Factor needed for recalculation of the heat load of the thermal zone.
284 This can be used to recalculate the thermalzones heat load inside
285 Modelica export for parametric studies. This works only together with
286 heat_load_ground_factor.
288 heat_load = heat_load_outside_factor * (t_inside - t_outside) +
289 heat_load_ground_factor * (t_inside - t_ground).
290 heat_load_ground_factor : float [W/K]
291 Factor needed for recalculation of the heat load of the thermal zone.
292 This can be used to recalculate the thermalzones heat load inside
293 Modelica export for parametric studies. See heat_load_outside_factor.
294 facade_areas : list of floats [m2]
295 List containing the area of each facade (with same tilt and
296 orientation) this includes also roofs and ground floors and windows.
297 n_outer : int
298 Number of total facades with different combination of tilt and
299 orientation, windows and outer walls rooftops
300 tilt_facade : list of floats [degree]
301 Tilt of facades against the horizontal.
302 orientation_facade : list of floats [degree]
303 Orientation of facades (Azimuth).
304 0 - North
305 90 - East
306 180 - South
307 270 - West
309 """
311 def __init__(self, thermal_zone, merge_windows, t_bt, t_bt_layer=7):
312 """Constructor for ThreeElement"""
314 self.internal_id = random.random()
316 self.thermal_zone = thermal_zone
317 self.merge_windows = merge_windows
318 self.t_bt = t_bt
319 self.t_bt_layer = t_bt_layer
321 # Attributes of inner walls
322 self.area_iw = 0.0
324 # coefficient of heat transfer facing the inside of this thermal zone
325 self.alpha_conv_inner_iw = 0.0
326 self.alpha_rad_inner_iw = 0.0
327 self.alpha_comb_inner_iw = 0.0
328 # coefficient of heat transfer facing the adjacent thermal zone
329 self.alpha_conv_outer_iw = 0.0
330 self.alpha_rad_outer_iw = 0.0
331 self.alpha_comb_outer_iw = 0.0
333 # UA-Value
334 self.ua_value_iw = 0.0
336 # resistances for heat transfer facing the inside of this thermal zone
337 self.r_conv_inner_iw = 0.0
338 self.r_rad_inner_iw = 0.0
339 self.r_comb_inner_iw = 0.0
340 self.r_conv_outer_iw = 0.0
341 self.r_rad_outer_iw = 0.0
342 self.r_comb_outer_iw = 0.0
344 # lumped resistance/capacity
345 self.r1_iw = 0.0
346 self.c1_iw = 0.0
348 # Attributes for outer walls (OuterWall, Rooftop)
349 self.area_ow = 0.0
351 # coefficient of heat transfer facing the inside of this thermal zone
352 self.alpha_conv_inner_ow = 0.0
353 self.alpha_rad_inner_ow = 0.0
354 self.alpha_comb_inner_ow = 0.0
356 # coefficient of heat transfer facing the ambient
357 self.alpha_conv_outer_ow = 0.0
358 self.alpha_rad_outer_ow = 0.0
359 self.alpha_comb_outer_ow = 0.0
361 # UA-Value
362 self.ua_value_ow = 0.0
364 # resistances for heat transfer facing the inside of this thermal zone
365 self.r_conv_inner_ow = 0.0
366 self.r_rad_inner_ow = 0.0
367 self.r_comb_inner_ow = 0.0
369 # resistances for heat transfer facing the ambient
370 self.r_conv_outer_ow = 0.0
371 self.r_rad_outer_ow = 0.0
372 self.r_comb_outer_ow = 0.0
374 # lumped resistances/capacity
375 self.r1_ow = 0.0
376 self.r_rest_ow = 0.0
377 self.c1_ow = 0.0
378 self.r_total_ow = 0.0
380 # Optical properties
381 self.ir_emissivity_outer_ow = 0.0
382 self.ir_emissivity_inner_ow = 0.0
383 self.solar_absorp_ow = 0.0
385 # Additional attributes
386 self.weightfactor_ow = []
387 self.weightfactor_ground = 0.0
388 self.outer_wall_areas = []
390 # Attributes for outer walls (OuterWall, Rooftop, GroundFloor)
391 self.area_gf = 0.0
393 # coefficient of heat transfer facing the inside of this thermal zone
394 self.alpha_conv_inner_gf = 0.0
395 self.alpha_rad_inner_gf = 0.0
396 self.alpha_comb_inner_gf = 0.0
398 # UA-Value
399 self.ua_value_gf = 0.0
401 # resistances for heat transfer facing the inside of this thermal zone
402 self.r_conv_inner_gf = 0.0
403 self.r_rad_inner_gf = 0.0
404 self.r_comb_inner_gf = 0.0
406 # lumped resistances/capacity
407 self.r1_gf = 0.0
408 self.r_rest_gf = 0.0
409 self.c1_gf = 0.0
410 self.r_total_gf = 0.0
412 # Optical properties
413 self.ir_emissivity_inner_gf = 0.0
415 # Additional attributes
417 self.weightfactor_ground = 0.0
419 # Attributes for windows
420 self.area_win = 0.0
422 # coefficient of heat transfer facing the inside of this thermal zone
423 self.alpha_conv_inner_win = 0.0
424 self.alpha_rad_inner_win = 0.0
425 self.alpha_comb_inner_win = 0.0
426 self.ratio_conv_rad_inner_win = 0.0
428 # coefficient of heat transfer facing the ambient
429 self.alpha_conv_outer_win = 0.0
430 self.alpha_rad_outer_win = 0.0
431 self.alpha_comb_outer_win = 0.0
433 # UA-Value
434 self.ua_value_win = 0.0
435 self.u_value_win = 0.0
437 # resistances for heat transfer facing the inside of this thermal zone
438 self.r_conv_inner_win = 0.0
439 self.r_rad_inner_win = 0.0
440 self.r_comb_inner_win = 0.0
442 # resistances for heat transfer facing the ambient
443 self.r_conv_outer_win = 0.0
444 self.r_rad_outer_win = 0.0
445 self.r_comb_outer_win = 0.0
447 # lumped resistances/capacity
448 self.r1_win = 0.0
450 # Optical properties
451 self.ir_emissivity_win = 0.0
452 self.ir_emissivity_inner_win = 0.0
453 self.solar_absorp_win = 0.0
455 # Additional attributes
456 self.weightfactor_win = []
457 self.window_areas = []
458 self.transparent_areas = []
459 self.shading_g_total = []
460 self.shading_max_irr = []
461 self.weighted_g_value = 0.0
463 # Misc values
465 self.alpha_rad_inner_mean = 0.0
466 self.alpha_rad_outer_mean = 0.0
467 self.n_outer = 0
468 self.facade_areas = []
469 self.tilt_facade = []
470 self.orientation_facade = []
471 self.heat_load = 0.0
472 self.cool_load = 0.0
473 self.heat_load_outside_factor = 0.0
474 self.heat_load_ground_factor = 0.0
476 def calc_attributes(self):
477 """Calls all necessary function to calculate model attributes"""
478 outer_walls = (
479 self.thermal_zone.outer_walls
480 + self.thermal_zone.rooftops
481 + self.thermal_zone.find_izes_outer()
482 )
484 for out_wall in outer_walls:
485 out_wall.calc_equivalent_res(t_bt=self.t_bt_layer)
486 out_wall.calc_ua_value()
487 for gf in self.thermal_zone.ground_floors:
488 gf.calc_equivalent_res(t_bt=self.t_bt_layer)
489 gf.calc_ua_value()
490 for win in self.thermal_zone.windows:
491 win.calc_equivalent_res()
492 win.calc_ua_value()
493 for inner_wall in (
494 self.thermal_zone.inner_walls
495 + self.thermal_zone.floors
496 + self.thermal_zone.ceilings
497 + self.nzbs_for_iw
498 ):
499 inner_wall.calc_equivalent_res(t_bt=self.t_bt_layer)
500 inner_wall.calc_ua_value()
502 self.set_calc_default()
503 if len(outer_walls) < 1:
504 warnings.warn(
505 "No walls are defined as outer walls for thermal "
506 + "zone "
507 + self.thermal_zone.name
508 + " in building "
509 + self.thermal_zone.parent.name
510 + ", please be careful with results. In addition "
511 + "this might lead to RunTimeErrors"
512 )
513 else:
514 self._sum_outer_wall_elements()
515 if (
516 len(
517 self.thermal_zone.inner_walls
518 + self.thermal_zone.floors
519 + self.thermal_zone.ceilings
520 + self.nzbs_for_iw
521 )
522 < 1
523 ):
524 warnings.warn(
525 "For thermal zone "
526 + self.thermal_zone.name
527 + " in building "
528 + self.thermal_zone.parent.name
529 + ", no inner walls have been defined."
530 )
531 else:
532 self._sum_inner_wall_elements()
533 self._calc_inner_elements()
534 if len(self.thermal_zone.windows) < 1:
535 warnings.warn(
536 "For thermal zone "
537 + self.thermal_zone.name
538 + " in building "
539 + self.thermal_zone.parent.name
540 + ", no windows have been defined."
541 )
542 else:
543 self._sum_window_elements()
544 if len(self.thermal_zone.ground_floors) < 1:
545 warnings.warn(
546 "For thermal zone "
547 + self.thermal_zone.name
548 + " in building "
549 + self.thermal_zone.parent.name
550 + ", no ground floors have been defined."
551 )
552 else:
553 self._sum_ground_floor_elements()
554 self._calc_ground_floor_elements()
555 if len(outer_walls) >= 1 or len(self.thermal_zone.windows) >= 1:
556 self._calc_outer_elements()
557 self._calc_wf()
558 self._calc_mean_values()
559 if len(self.thermal_zone.interzonal_elements) >= 1:
560 warnings.warn(
561 "For thermal zone "
562 + self.thermal_zone.name
563 + " in building "
564 + self.thermal_zone.parent.name
565 + ", interzonal elements have been defined. ThreeElement export"
566 + " will treat them as outer walls or inner walls depending on "
567 + "the project parameter 'method_interzonal_export'. Consider "
568 + "using FiveElement instead."
569 )
570 self._calc_number_of_elements()
571 self._fill_zone_lists()
572 self._calc_heat_load()
573 self.cool_load = -self.heat_load
575 return True
577 @staticmethod
578 def _calc_parallel_connection(element_list, omega, mode='iw'):
579 """Parallel connection of walls according to VDI 6007
581 Calculates the parallel connection of wall elements according to VDI
582 6007, resulting in R1 and C1 (equation 23, 24).
584 Parameters
585 ----------
586 element_list : list
587 List of inner or outer walls
588 omega : float
589 VDI 6007 frequency
590 mode : str
591 'ow' uses r1 and c1_korr
592 'iw' uses r1 and c1 (function falls back here for other strings)
594 Returns
595 -------
596 r1 : float [K/W]
597 VDI 6007 resistance for all inner or outer walls
598 c1 : float [K/W]
599 VDI 6007 capacity all for inner or outer walls
600 """
602 for wall_count in range(len(element_list) - 1):
604 if wall_count == 0:
605 r1_before = element_list[wall_count].r1
606 if mode == 'ow':
607 c1_before = element_list[wall_count].c1_korr
608 else:
609 c1_before = element_list[wall_count].c1
610 else:
611 r1_before = r1
612 c1_before = c1
613 r1_add = element_list[wall_count + 1].r1
614 if mode == 'ow':
615 c1_add = element_list[wall_count + 1].c1_korr
616 else:
617 c1_add = element_list[wall_count + 1].c1
619 r1 = (
620 r1_before * c1_before ** 2 + r1_add * c1_add ** 2
621 + omega ** 2 * r1_before * r1_add * (r1_before + r1_add)
622 * c1_before ** 2 * c1_add ** 2
623 ) / (
624 (c1_before + c1_add) ** 2
625 + omega ** 2 * (r1_before + r1_add) ** 2 * c1_before ** 2
626 * c1_add ** 2
627 )
629 c1 = (
630 (c1_before + c1_add) ** 2
631 + omega ** 2 * (r1_before + r1_add) ** 2 * c1_before ** 2
632 * c1_add ** 2
633 ) / (
634 c1_before + c1_add
635 + omega ** 2
636 * (r1_before ** 2 * c1_before + r1_add ** 2 * c1_add)
637 * c1_before * c1_add
638 )
640 return r1, c1
642 def _sum_outer_wall_elements(self):
643 """Sum attributes for outer wall elements
645 This function sums and computes the area-weighted values,
646 where necessary for coefficients of heat
647 transfer, resistances, areas and UA-Values.
649 For ThreeElement model it treats rooftops, outer walls and zone borders
650 to neighboured zones (if this zone is heated)
651 as one kind of wall type.
653 """
654 outer_walls = (
655 self.thermal_zone.outer_walls
656 + self.thermal_zone.rooftops
657 + self.thermal_zone.find_izes_outer()
658 )
660 self.area_ow = sum(out_wall.area for out_wall in outer_walls)
662 self.ua_value_ow = sum(out_wall.ua_value for out_wall in outer_walls)
664 self.r_total_ow = 1 / self.ua_value_ow
666 # values facing the inside of the thermal zone
668 self.r_conv_inner_ow = 1 / (
669 sum(1 / out_wall.r_inner_conv for out_wall in outer_walls)
670 )
672 self.r_rad_inner_ow = 1 / (
673 sum(1 / out_wall.r_inner_rad for out_wall in outer_walls)
674 )
676 self.r_comb_inner_ow = 1 / (
677 sum(1 / out_wall.r_inner_comb for out_wall in outer_walls)
678 )
680 self.ir_emissivity_inner_ow = (
681 sum(
682 out_wall.layer[0].material.ir_emissivity * out_wall.area
683 for out_wall in outer_walls
684 )
685 ) / self.area_ow
687 self.alpha_conv_inner_ow = 1 / (self.r_conv_inner_ow * self.area_ow)
688 self.alpha_rad_inner_ow = 1 / (self.r_rad_inner_ow * self.area_ow)
689 self.alpha_comb_inner_ow = 1 / (self.r_comb_inner_ow * self.area_ow)
691 # values facing the ambient
692 # ground floor does not have any coefficients on ambient side
694 self.r_conv_outer_ow = 1 / (
695 sum(1 / out_wall.r_outer_conv for out_wall in outer_walls)
696 )
697 self.r_rad_outer_ow = 1 / (
698 sum(1 / out_wall.r_outer_rad for out_wall in outer_walls)
699 )
700 self.r_comb_outer_ow = 1 / (
701 sum(1 / out_wall.r_outer_comb for out_wall in outer_walls)
702 )
704 self.ir_emissivity_outer_ow = (
705 sum(
706 out_wall.layer[-1].material.ir_emissivity * out_wall.area
707 for out_wall in outer_walls
708 )
709 ) / self.area_ow
711 self.solar_absorp_ow = (
712 sum(
713 out_wall.layer[-1].material.solar_absorp * out_wall.area
714 for out_wall in outer_walls
715 )
716 ) / self.area_ow
718 self.alpha_conv_outer_ow = 1 / (self.r_conv_outer_ow * self.area_ow)
719 self.alpha_rad_outer_ow = 1 / (self.r_rad_outer_ow * self.area_ow)
720 self.alpha_comb_outer_ow = 1 / (self.r_comb_outer_ow * self.area_ow)
722 def _sum_ground_floor_elements(self):
723 """Sum attributes for ground floor elements
725 This function sums and computes the area-weighted values,
726 where necessary (the class doc string) for coefficients of heat
727 transfer, resistances, areas and UA-Values.
730 """
732 self.area_gf = sum(ground.area for ground in self.thermal_zone.ground_floors)
734 self.ua_value_gf = sum(
735 ground.ua_value for ground in self.thermal_zone.ground_floors
736 )
738 self.r_total_gf = 1 / self.ua_value_gf
740 # values facing the inside of the thermal zone
742 self.r_conv_inner_gf = 1 / sum(
743 1 / ground.r_inner_conv for ground in self.thermal_zone.ground_floors
744 )
746 self.r_rad_inner_gf = 1 / sum(
747 1 / ground.r_inner_rad for ground in self.thermal_zone.ground_floors
748 )
750 self.r_comb_inner_gf = 1 / sum(
751 1 / ground.r_inner_comb for ground in self.thermal_zone.ground_floors
752 )
754 self.ir_emissivity_inner_gf = (
755 sum(
756 ground.layer[0].material.ir_emissivity * ground.area
757 for ground in self.thermal_zone.ground_floors
758 )
759 / self.area_gf
760 )
762 self.alpha_conv_inner_gf = 1 / (self.r_conv_inner_gf * self.area_gf)
763 self.alpha_rad_inner_gf = 1 / (self.r_rad_inner_gf * self.area_gf)
764 self.alpha_comb_inner_gf = 1 / (self.r_comb_inner_gf * self.area_gf)
766 def _sum_inner_wall_elements(self):
767 """Sum attributes for interior elements
769 This function sums and computes the area-weighted values,
770 where necessary (the class doc string) for coefficients of heat
771 transfer, resistances, areas and UA-Values.
773 It treats all inner walls identical.
775 Function is identical for TwoElement, ThreeElement and FourElement.
777 Calculation of adjacent thermal zones and thus these attributes are
778 currently not supported.
780 """
781 self.area_iw = (
782 sum(in_wall.area for in_wall in self.thermal_zone.inner_walls)
783 + sum(floor.area for floor in self.thermal_zone.floors)
784 + sum(ceiling.area for ceiling in self.thermal_zone.ceilings)
785 + sum(nzb.area for nzb in self.nzbs_for_iw)
786 )
788 self.ua_value_iw = (
789 sum(in_wall.ua_value for in_wall in self.thermal_zone.inner_walls)
790 + sum(floor.ua_value for floor in self.thermal_zone.floors)
791 + sum(ceiling.ua_value for ceiling in self.thermal_zone.ceilings)
792 + sum(nzb.ua_value for nzb in self.nzbs_for_iw)
793 )
795 # values facing the inside of the thermal zone
797 self.r_conv_inner_iw = 1 / (
798 sum(1 / in_wall.r_inner_conv for in_wall in self.thermal_zone.inner_walls)
799 + sum(1 / floor.r_inner_conv for floor in self.thermal_zone.floors)
800 + sum(1 / ceiling.r_inner_conv for ceiling in self.thermal_zone.ceilings)
801 + sum(1 / nzb.r_inner_conv for nzb in self.nzbs_for_iw)
802 )
804 self.r_rad_inner_iw = 1 / (
805 sum(1 / in_wall.r_inner_rad for in_wall in self.thermal_zone.inner_walls)
806 + sum(1 / floor.r_inner_rad for floor in self.thermal_zone.floors)
807 + sum(1 / ceiling.r_inner_rad for ceiling in self.thermal_zone.ceilings)
808 + sum(1 / nzb.r_inner_rad for nzb in self.nzbs_for_iw)
809 )
811 self.r_comb_inner_iw = 1 / (
812 sum(1 / in_wall.r_inner_comb for in_wall in self.thermal_zone.inner_walls)
813 + sum(1 / floor.r_inner_comb for floor in self.thermal_zone.floors)
814 + sum(1 / ceiling.r_inner_comb for ceiling in self.thermal_zone.ceilings)
815 + sum(1 / nzb.r_inner_comb for nzb in self.nzbs_for_iw)
816 )
818 self.ir_emissivity_inner_iw = (
819 sum(
820 in_wall.layer[0].material.ir_emissivity * in_wall.area
821 for in_wall in self.thermal_zone.inner_walls
822 )
823 + sum(
824 floor.layer[0].material.ir_emissivity * floor.area
825 for floor in self.thermal_zone.floors
826 )
827 + sum(
828 ceiling.layer[0].material.ir_emissivity * ceiling.area
829 for ceiling in self.thermal_zone.ceilings
830 )
831 + sum(
832 nzb.layer[0].material.ir_emissivity * nzb.area
833 for nzb in self.nzbs_for_iw
834 )
835 ) / self.area_iw
837 self.alpha_conv_inner_iw = 1 / (self.r_conv_inner_iw * self.area_iw)
838 self.alpha_rad_inner_iw = 1 / (self.r_rad_inner_iw * self.area_iw)
839 self.alpha_comb_inner_iw = 1 / (self.r_comb_inner_iw * self.area_iw)
841 # adjacent thermal zones are not supported!
843 def _sum_window_elements(self):
844 """Sum attributes for window elements
846 This function sums and computes the area-weighted values,
847 where necessary (the class doc string) for coefficients of heat
848 transfer, resistances, areas and UA-Values.
850 Function is identical for TwoElement, ThreeElement and FourElement.
851 """
853 self.area_win = sum(win.area for win in self.thermal_zone.windows)
854 self.ua_value_win = sum(win.ua_value for win in self.thermal_zone.windows)
855 self.u_value_win = self.ua_value_win / self.area_win
857 # values facing the inside of the thermal zone
859 self.r_conv_inner_win = 1 / (
860 sum(1 / win.r_inner_conv for win in self.thermal_zone.windows)
861 )
863 self.r_rad_inner_win = 1 / (
864 sum(1 / win.r_inner_rad for win in self.thermal_zone.windows)
865 )
867 self.r_comb_inner_win = 1 / (
868 sum(1 / win.r_inner_comb for win in self.thermal_zone.windows)
869 )
871 self.ir_emissivity_inner_win = (
872 sum(
873 win.layer[0].material.ir_emissivity * win.area
874 for win in self.thermal_zone.windows
875 )
876 / self.area_win
877 )
879 self.alpha_conv_inner_win = 1 / (self.r_conv_inner_win * self.area_win)
880 self.alpha_rad_inner_win = 1 / (self.r_rad_inner_win * self.area_win)
881 self.alpha_comb_inner_win = 1 / (self.r_comb_inner_win * self.area_win)
882 self.ratio_conv_rad_inner_win = (
883 sum(win.a_conv * win.area for win in self.thermal_zone.windows)
884 / self.area_win
885 )
887 # values facing the ambient
889 self.r_conv_outer_win = 1 / (
890 sum(1 / win.r_outer_conv for win in self.thermal_zone.windows)
891 )
893 self.r_rad_outer_win = 1 / (
894 sum(1 / win.r_outer_rad for win in self.thermal_zone.windows)
895 )
897 self.r_comb_outer_win = 1 / (
898 sum(1 / win.r_outer_comb for win in self.thermal_zone.windows)
899 )
901 self.ir_emissivity_win = (
902 sum(
903 win.layer[-1].material.ir_emissivity * win.area
904 for win in self.thermal_zone.windows
905 )
906 / self.area_win
907 )
909 self.solar_absorp_win = (
910 sum(
911 win.layer[-1].material.solar_absorp * win.area
912 for win in self.thermal_zone.windows
913 )
914 / self.area_win
915 )
917 self.weighted_g_value = (
918 sum(win.g_value * win.area for win in self.thermal_zone.windows)
919 / self.area_win
920 )
922 self.alpha_conv_outer_win = 1 / (self.r_conv_outer_win * self.area_win)
923 self.alpha_rad_outer_win = 1 / (self.r_rad_outer_win * self.area_win)
924 self.alpha_comb_outer_win = 1 / (self.r_comb_outer_win * self.area_win)
926 def _calc_outer_elements(self):
927 """Lumped parameter for outer wall elements
929 Calculates all necessary parameters for outer walls. This includes
930 OuterWalls and Rooftops.
932 Attributes
933 ----------
934 omega : float [1/s]
935 angular frequency with given time period.
936 outer_walls : list
937 List containing all TEASER Wall instances that are treated as same
938 outer wall type. In case of TwoElement model OuterWalls, Rooftops
939 """
941 omega = 2 * math.pi / 86400 / self.t_bt
943 outer_walls = (
944 self.thermal_zone.outer_walls
945 + self.thermal_zone.rooftops
946 + self.thermal_zone.find_izes_outer()
947 )
949 if 0 < len(outer_walls) <= 1:
950 # only one outer wall, no need to calculate chain matrix
951 self.r1_ow = outer_walls[0].r1
952 self.c1_ow = outer_walls[0].c1_korr
953 elif len(outer_walls) > 1:
954 # more than one outer wall, calculate chain matrix
955 self.r1_ow, self.c1_ow = self._calc_parallel_connection(
956 outer_walls, omega, mode='ow'
957 )
959 if self.merge_windows is False:
960 try:
962 if len(self.thermal_zone.windows) > 0:
963 self.r1_win = 1 / sum(
964 (1 / win.r1) for win in self.thermal_zone.windows
965 )
966 if len(outer_walls) > 0:
967 conduction = 1 / sum(
968 (1 / element.r_conduc) for element in outer_walls
969 )
971 self.r_rest_ow = conduction - self.r1_ow
973 except RuntimeError:
974 print(
975 "As no outer walls or no windows are defined lumped "
976 "parameter cannot be calculated"
977 )
979 if self.merge_windows is True:
981 try:
982 if (
983 len(self.thermal_zone.windows) > 0
984 and len(outer_walls) > 0
985 ):
986 self.r1_win = 1 / sum(
987 1 / (win.r1 / 6) for win in self.thermal_zone.windows
988 )
990 self.r1_ow = 1 / (1 / self.r1_ow + 1 / self.r1_win)
992 self.r_total_ow = 1 / (self.ua_value_ow + self.ua_value_win)
993 self.r_rest_ow = (
994 self.r_total_ow
995 - self.r1_ow
996 - 1
997 / (
998 (
999 (1 / self.r_conv_inner_ow)
1000 + (1 / self.r_conv_inner_win)
1001 + (1 / self.r_rad_inner_ow)
1002 + (1 / self.r_rad_inner_win)
1003 )
1004 )
1005 ) - 1 / (self.alpha_comb_outer_ow * self.area_ow)
1007 self.ir_emissivity_inner_ow = (
1008 self.ir_emissivity_inner_ow * self.area_ow
1009 + self.ir_emissivity_inner_win * self.area_win
1010 ) / (self.area_ow + self.area_win)
1012 self.ir_emissivity_outer_ow = (
1013 self.ir_emissivity_outer_ow * self.area_ow
1014 + self.ir_emissivity_win * self.area_win
1015 ) / (self.area_ow + self.area_win)
1017 self.solar_absorp_ow = (
1018 self.solar_absorp_ow * self.area_ow
1019 + self.solar_absorp_win * self.area_win
1020 ) / (self.area_ow + self.area_win)
1022 except RuntimeError:
1023 print(
1024 "As no outer walls or no windows are defined lumped "
1025 "parameter cannot be calculated"
1026 )
1028 def _calc_ground_floor_elements(self):
1029 """Lumped parameter for ground floor elements
1031 Calculates all necessary parameters for ground floors.
1033 Attributes
1034 ----------
1035 omega : float [1/s]
1036 angular frequency with given time period.
1037 """
1039 omega = 2 * math.pi / 86400 / self.t_bt
1041 if 0 < len(self.thermal_zone.ground_floors) <= 1:
1042 # only one outer wall, no need to calculate chain matrix
1043 self.r1_gf = self.thermal_zone.ground_floors[0].r1
1044 self.c1_gf = self.thermal_zone.ground_floors[0].c1_korr
1045 elif len(self.thermal_zone.ground_floors) > 1:
1046 # more than one outer wall, calculate chain matrix
1047 self.r1_gf, self.c1_gf = self._calc_parallel_connection(
1048 self.thermal_zone.ground_floors, omega, mode='ow'
1049 )
1050 try:
1051 conduction = 1 / sum(
1052 (1 / element.r_conduc) for element in self.thermal_zone.ground_floors
1053 )
1055 self.r_rest_gf = conduction - self.r1_gf
1056 except RuntimeError:
1057 print(
1058 "As no ground floors are defined lumped "
1059 "parameter cannot be calculated"
1060 )
1062 def _calc_inner_elements(self):
1063 """Lumped parameter for outer wall elements
1065 Calculates all necessary parameters for inner walls. This includes
1066 InnerWalls, Ceilings and Floors.
1068 Attributes
1069 ----------
1070 omega : float [1/s]
1071 angular frequency with given time period.
1072 outer_walls : list
1073 List containing all TEASER Wall instances that are treated as same
1074 outer wall type. In case of TwoElement model OuterWalls,
1075 GroundFloors, Rooftops
1076 """
1078 omega = 2 * math.pi / 86400 / self.t_bt
1080 inner_walls = (
1081 self.thermal_zone.inner_walls
1082 + self.thermal_zone.floors
1083 + self.thermal_zone.ceilings
1084 + self.nzbs_for_iw
1085 )
1087 for in_wall in inner_walls:
1088 in_wall.calc_equivalent_res()
1089 in_wall.calc_ua_value()
1091 if 0 < len(inner_walls) <= 1:
1092 # only one outer wall, no need to calculate chain matrix
1093 self.r1_iw = inner_walls[0].r1
1094 self.c1_iw = inner_walls[0].c1_korr
1095 elif len(inner_walls) > 1:
1096 # more than one outer wall, calculate chain matrix
1097 self.r1_iw, self.c1_iw = self._calc_parallel_connection(
1098 inner_walls, omega, mode='iw'
1099 )
1101 def _calc_wf(self):
1102 """Weightfactors for outer elements(walls, roof, ground floor, windows)
1104 Calculates the weightfactors of the outer walls, including ground and
1105 windows.
1107 Parameters
1108 ----------
1109 outer_walls : list
1110 List containing all TEASER Wall instances that are treated as same
1111 outer wall type. In case of TwoElement model OuterWalls,
1112 GroundFloors, Rooftops
1113 """
1115 outer_walls = (
1116 self.thermal_zone.outer_walls
1117 + self.thermal_zone.rooftops
1118 + self.thermal_zone.find_izes_outer()
1119 )
1120 self.weightfactor_ground = 0.0
1122 if self.merge_windows is True:
1124 for wall in outer_walls:
1125 wall.wf_out = wall.ua_value / (self.ua_value_ow + self.ua_value_win)
1127 for win in self.thermal_zone.windows:
1128 win.wf_out = win.ua_value / (self.ua_value_ow + self.ua_value_win)
1130 elif self.merge_windows is False:
1132 for wall in outer_walls:
1133 wall.wf_out = wall.ua_value / self.ua_value_ow
1135 for win in self.thermal_zone.windows:
1136 win.wf_out = win.ua_value / self.ua_value_win
1138 else:
1139 raise ValueError("specify merge window method correctly")
1141 def _calc_mean_values(self):
1142 """Calculates mean values for inner and outer elements
1144 This function calculates mean values inside the thermal zone (e.g.
1145 the mean value for coefficient of radiative heat transfer between
1146 inner and outer walls
1147 """
1149 self.alpha_rad_inner_mean = (
1150 self.area_ow * self.alpha_rad_inner_ow
1151 + self.area_win * self.alpha_rad_inner_win
1152 + self.area_gf * self.alpha_rad_inner_gf
1153 + self.area_iw * self.alpha_rad_inner_iw
1154 ) / (self.area_ow + self.area_win + self.area_iw + self.area_gf)
1155 self.alpha_rad_outer_mean = (
1156 self.area_ow * self.alpha_rad_outer_ow
1157 + self.area_win * self.alpha_rad_outer_win
1158 ) / (self.area_ow + self.area_win)
1160 def _calc_number_of_elements(self):
1161 """Calculates the number of facade elements with different tilt/orient
1163 This function calculates the number of outer elements with a
1164 different combination of orientation and tilt, this includes the
1165 rooftops and borders to unheated neighboured zones if
1166 this zone is heated.
1167 """
1169 outer_elements = (
1170 self.thermal_zone.outer_walls
1171 + self.thermal_zone.find_izes_outer()
1172 + self.thermal_zone.rooftops
1173 + self.thermal_zone.windows
1174 )
1176 tilt_orient = []
1177 for element in outer_elements:
1178 tilt_orient.append((element.orientation, element.tilt))
1179 self.n_outer = len(list(set(tilt_orient)))
1181 def _fill_zone_lists(self):
1182 """Fills lists like weightfactors and tilt, orientation
1184 Fills the lists of a zone according to orientation and tilt of the
1185 zone. Therefore it compares orientation and tilt of all outer
1186 elements and then creates lists for zone weightfactors, orientation,
1187 tilt, ares and sunblinds."""
1189 outer_elements = (
1190 self.thermal_zone.outer_walls
1191 + self.thermal_zone.find_izes_outer()
1192 + self.thermal_zone.rooftops
1193 + self.thermal_zone.windows
1194 )
1196 tilt_orient = []
1197 for element in outer_elements:
1198 tilt_orient.append((element.orientation, element.tilt))
1199 tilt_orient = list(set(tilt_orient))
1201 for i in tilt_orient:
1202 wall_rt_nzb = self.thermal_zone.find_walls(
1203 i[0], i[1]
1204 ) + self.thermal_zone.find_rts(
1205 i[0], i[1]
1206 ) + self.thermal_zone.find_izes_outer(
1207 i[0], i[1]
1208 )
1209 wins = self.thermal_zone.find_wins(i[0], i[1])
1211 if self.merge_windows is True:
1212 self.facade_areas.append(
1213 sum([element.area for element in (wall_rt_nzb + wins)])
1214 )
1215 else:
1216 self.facade_areas.append(sum([element.area
1217 for element in (wall_rt_nzb)]))
1219 self.orientation_facade.append(i[0])
1220 self.tilt_facade.append(i[1])
1222 if not wall_rt_nzb:
1223 self.weightfactor_ow.append(0.0)
1224 self.outer_wall_areas.append(0.0)
1225 else:
1226 self.weightfactor_ow.append(sum([wall.wf_out
1227 for wall in wall_rt_nzb]))
1228 self.outer_wall_areas.append(sum([wall.area
1229 for wall in wall_rt_nzb]))
1231 if not wins:
1232 self.weightfactor_win.append(0.0)
1233 self.shading_g_total.append(1.0)
1234 self.window_areas.append(0.0)
1235 self.transparent_areas.append(0.0)
1236 self.shading_max_irr.append(9999.9)
1237 else:
1238 self.weightfactor_win.append(sum([win.wf_out for win in wins]))
1240 if self.merge_windows is False:
1241 self.window_areas.append(sum([win.area for win in wins]))
1242 self.transparent_areas.append(sum([win.area for win in wins]))
1244 else:
1245 self.window_areas.append(0)
1246 self.transparent_areas.append(sum([win.area for win in wins]))
1247 self.shading_g_total.append(
1248 sum(
1249 [
1250 win.shading_g_total * win.area / sum([w.area for w in wins])
1251 for win in wins
1252 ]
1253 )
1254 )
1255 self.shading_max_irr.append(
1256 sum(
1257 [
1258 win.shading_max_irr * win.area / sum([w.area for w in wins])
1259 for win in wins
1260 ]
1261 )
1262 )
1264 def _calc_heat_load(self):
1265 """Static heat load calculation
1267 This function calculates the static heat load of the thermal zone by
1268 multiplying the UA-Value of the elements with the given Temperature
1269 difference of t_inside and t_outside. And takes heat losses through
1270 infiltration into account.
1272 Keep in mind that this is a rough approximation of the DIN Heat Demand
1274 Attributes
1275 ----------
1276 ua_value_ow_temp : float [W/(m2*K)]
1277 UA Value without GroundFloors
1278 ua_value_gf_temp : float [W/(m2*K)]
1279 UA Value of all GroundFloors
1280 """
1281 if self.thermal_zone.use_conditions.base_infiltration > 0.5:
1282 warnings.warn("The base_infiltration is larger than 0.5, "
1283 "which could lead to ideal heaters being too small.")
1285 self.heat_load = 0.0
1287 if self.thermal_zone.parent.parent.t_soil_mode == 2:
1288 t_ground = self.thermal_zone.t_ground \
1289 - self.thermal_zone.t_ground_amplitude
1290 else:
1291 t_ground = self.thermal_zone.t_ground
1293 ua_value_ow_temp = self.ua_value_ow
1294 self.heat_load_outside_factor = (
1295 (ua_value_ow_temp + self.ua_value_win)
1296 + self.thermal_zone.volume
1297 * self.thermal_zone.use_conditions.normative_infiltration
1298 * 1
1299 / 3600
1300 * self.thermal_zone.heat_capac_air
1301 * self.thermal_zone.density_air
1302 )
1303 self.heat_load_ground_factor = self.ua_value_gf
1304 self.heat_load = \
1305 self.heat_load_outside_factor \
1306 * (self.thermal_zone.t_inside - self.thermal_zone.t_outside) \
1307 + self.heat_load_ground_factor \
1308 * (self.thermal_zone.t_inside - t_ground)
1310 def set_calc_default(self):
1311 """sets default calculation parameters
1312 """
1314 # Attributes of inner walls
1315 self.area_iw = 0.0
1317 # coefficient of heat transfer facing the inside of this thermal zone
1318 self.alpha_conv_inner_iw = 0.0
1319 self.alpha_rad_inner_iw = 0.0
1320 self.alpha_comb_inner_iw = 0.0
1321 # coefficient of heat transfer facing the adjacent thermal zone
1322 self.alpha_conv_outer_iw = 0.0
1323 self.alpha_rad_outer_iw = 0.0
1324 self.alpha_comb_outer_iw = 0.0
1326 # UA-Value
1327 self.ua_value_iw = 0.0
1329 # resistances for heat transfer facing the inside of this thermal zone
1330 self.r_conv_inner_iw = 0.0
1331 self.r_rad_inner_iw = 0.0
1332 self.r_comb_inner_iw = 0.0
1333 self.r_conv_outer_iw = 0.0
1334 self.r_rad_outer_iw = 0.0
1335 self.r_comb_outer_iw = 0.0
1337 # lumped resistance/capacity
1338 self.r1_iw = 0.0
1339 self.c1_iw = 0.0
1341 # Attributes for outer walls (OuterWall, Rooftop)
1342 self.area_ow = 0.0
1344 # coefficient of heat transfer facing the inside of this thermal zone
1345 self.alpha_conv_inner_ow = 0.0
1346 self.alpha_rad_inner_ow = 0.0
1347 self.alpha_comb_inner_ow = 0.0
1349 # coefficient of heat transfer facing the ambient
1350 self.alpha_conv_outer_ow = 0.0
1351 self.alpha_rad_outer_ow = 0.0
1352 self.alpha_comb_outer_ow = 0.0
1354 # UA-Value
1355 self.ua_value_ow = 0.0
1357 # resistances for heat transfer facing the inside of this thermal zone
1358 self.r_conv_inner_ow = 0.0
1359 self.r_rad_inner_ow = 0.0
1360 self.r_comb_inner_ow = 0.0
1362 # resistances for heat transfer facing the ambient
1363 self.r_conv_outer_ow = 0.0
1364 self.r_rad_outer_ow = 0.0
1365 self.r_comb_outer_ow = 0.0
1367 # lumped resistances/capacity
1368 self.r1_ow = 0.0
1369 self.r_rest_ow = 0.0
1370 self.c1_ow = 0.0
1371 self.r_total_ow = 0.0
1373 # Optical properties
1374 self.ir_emissivity_outer_ow = 0.0
1375 self.ir_emissivity_inner_ow = 0.0
1376 self.solar_absorp_ow = 0.0
1378 # Additional attributes
1379 self.weightfactor_ow = []
1380 self.weightfactor_ground = 0.0
1381 self.outer_wall_areas = []
1383 # Attributes for outer walls (OuterWall, Rooftop, GroundFloor)
1384 self.area_gf = 0.0
1386 # coefficient of heat transfer facing the inside of this thermal zone
1387 self.alpha_conv_inner_gf = 0.0
1388 self.alpha_rad_inner_gf = 0.0
1389 self.alpha_comb_inner_gf = 0.0
1391 # UA-Value
1392 self.ua_value_gf = 0.0
1394 # resistances for heat transfer facing the inside of this thermal zone
1395 self.r_conv_inner_gf = 0.0
1396 self.r_rad_inner_gf = 0.0
1397 self.r_comb_inner_gf = 0.0
1399 # lumped resistances/capacity
1400 self.r1_gf = 0.0
1401 self.r_rest_gf = 0.0
1402 self.c1_gf = 0.0
1403 self.r_total_gf = 0.0
1405 # Optical properties
1406 self.ir_emissivity_inner_gf = 0.0
1408 # Additional attributes
1410 self.weightfactor_ground = 0.0
1412 # Attributes for windows
1413 self.area_win = 0.0
1415 # coefficient of heat transfer facing the inside of this thermal zone
1416 self.alpha_conv_inner_win = 0.0
1417 self.alpha_rad_inner_win = 0.0
1418 self.alpha_comb_inner_win = 0.0
1419 self.ratio_conv_rad_inner_win = 0.0
1421 # coefficient of heat transfer facing the ambient
1422 self.alpha_conv_outer_win = 0.0
1423 self.alpha_rad_outer_win = 0.0
1424 self.alpha_comb_outer_win = 0.0
1426 # UA-Value
1427 self.ua_value_win = 0.0
1428 self.u_value_win = 0.0
1430 # resistances for heat transfer facing the inside of this thermal zone
1431 self.r_conv_inner_win = 0.0
1432 self.r_rad_inner_win = 0.0
1433 self.r_comb_inner_win = 0.0
1435 # resistances for heat transfer facing the ambient
1436 self.r_conv_outer_win = 0.0
1437 self.r_rad_outer_win = 0.0
1438 self.r_comb_outer_win = 0.0
1440 # lumped resistances/capacity
1441 self.r1_win = 0.0
1443 # Optical properties
1444 self.ir_emissivity_win = 0.0
1445 self.solar_absorp_win = 0.0
1447 # Additional attributes
1448 self.weightfactor_win = []
1449 self.window_areas = []
1450 self.transparent_areas = []
1451 self.shading_g_total = []
1452 self.shading_max_irr = []
1453 self.weighted_g_value = 0.0
1455 # Misc values
1457 self.alpha_rad_inner_mean = 0.0
1458 self.n_outer = 0
1459 self.facade_areas = []
1460 self.tilt_facade = []
1461 self.orientation_facade = []
1462 self.heat_load = 0.0
1463 self.cool_load = 0.0
1465 @property
1466 def nzbs_for_iw(self):
1467 """returns borders to neighboured zones to be considered as inner walls
1469 Returns
1470 -------
1471 value : list
1472 list of those interzonal elements that are NOT to be treated as
1473 'outer_ordered' depending on their 'interzonal_type_export'
1474 attribute
1476 """
1477 elements = []
1478 for i in self.thermal_zone.interzonal_elements:
1479 if not i.interzonal_type_export == 'outer_ordered':
1480 elements.append(i)
1481 else:
1482 pass
1483 return elements