Coverage for teaser/logic/buildingobjects/calculation/two_element.py: 98%

385 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2025-04-29 16:01 +0000

1# created December 2016 

2 

3from __future__ import division 

4import math 

5import random 

6import warnings 

7 

8 

9class TwoElement(object): 

10 """This class contains attributes and functions for two element model 

11 

12 This model distinguishes between internal thermal masses and exterior walls. 

13 While exterior walls contribute to heat transfer to the ambient, adiabatic 

14 conditions apply to interior walls. This approach allows considering the 

15 dynamic behaviour induced by internal heat storage. This class calculates 

16 and holds all attributes given in documentation. 

17 

18 It treats Rooftops, GroundFloors and OuterWalls as one type of outer 

19 walls and computes one RC-combination for these types. 

20 

21 Depending on the chosen method it will consider an extra resistance for 

22 windows or merge all windows into the RC-Combination for outer walls. 

23 

24 Parameters 

25 ---------- 

26 thermal_zone: ThermalZone() 

27 TEASER instance of ThermalZone 

28 merge_windows : boolean 

29 True for merging the windows into the outer wall's RC-combination, 

30 False for separate resistance for window, default is False. (Only 

31 supported for IBPSA) 

32 t_bt : float [d] 

33 Time constant according to VDI 6007 (default t_bt = 5) 

34 t_bt_layer : float [d] 

35 Time constant according to VDI 6007 for aggragation of layers (default t_bt = 7) 

36 

37 Attributes 

38 ---------- 

39 Interior Walls 

40 

41 area_iw : float [m2] 

42 Area of all interior walls. 

43 alpha_conv_inner_iw : float [W/(m2K)] 

44 Area-weighted convective coefficient of heat transfer of interior 

45 walls facing the inside of this thermal zone. 

46 alpha_rad_inner_iw : float [W/(m2K)] 

47 Area-weighted radiative coefficient of heat transfer of interior 

48 walls facing the inside of this thermal zone. 

49 alpha_comb_inner_iw : float [W/(m2K)] 

50 Area-weighted combined coefficient of heat transfer of interior walls 

51 facing the inside of this thermal zone. 

52 alpha_conv_outer_iw : float [W/(m2K)] 

53 Area-weighted convective coefficient of heat transfer of interior 

54 walls facing the adjacent thermal zone. (Currently not supported) 

55 alpha_rad_outer_iw : float [W/(m2K)] 

56 Area-weighted radiative coefficient of heat transfer of interior 

57 walls facing the adjacent thermal zone. (Currently not supported) 

58 alpha_comb_outer_iw : float [W/(m2K)] 

59 Area-weighted combined coefficient of heat transfer of interior walls 

60 facing the adjacent thermal zone. (Currently not supported) 

61 ua_value_iw : float [W/K] 

62 U-Value times interior wall area. (Does not take adjacent thermal 

63 zones into account) 

64 r_conv_inner_iw : float [K/W] 

65 Sum of convective resistances for all interior walls 

66 facing the inside of this thermal zone. 

67 r_rad_inner_iw : float [K/W] 

68 Sum of radiative resistances for all interior walls facing the 

69 inside of this thermal zone 

70 r_comb_inner_iw : float [K/W] 

71 Sum of combined resistances for all interior walls facing the 

72 inside of this thermal zone 

73 r1_iw : float [K/W] 

74 Lumped resistance of interior walls no heat transfer coefficients for 

75 convection and radiation are accounted in this resistance. 

76 c1_iw : float [J/K] 

77 Lumped capacity of interior walls 

78 

79 Outer Walls (OuterWall, Rooftop, GroundFloor) 

80 

81 area_ow : float [m2] 

82 Area of all outer walls. 

83 n_outer : int 

84 Number of total outer walls with different combination of tilt and 

85 orientation, including Rooftops and GroundFloors 

86 alpha_conv_inner_ow : float [W/(m2K)] 

87 Area-weighted convective coefficient of heat transfer of outer walls 

88 facing the inside of this thermal zone. 

89 alpha_rad_inner_ow : float [W/(m2K)] 

90 Area-weighted radiative coefficient of heat transfer of outer walls 

91 facing the inside of this thermal zone. 

92 alpha_comb_inner_ow : float [W/(m2K)] 

93 Area-weighted combined coefficient of heat transfer of outer walls 

94 facing the inside of this thermal zone. 

95 alpha_conv_outer_ow : float [W/(m2K)] 

96 Area-weighted convective coefficient of heat transfer of outer walls 

97 facing the ambient. 

98 alpha_rad_outer_ow : float [W/(m2K)] 

99 Area-weighted radiative coefficient of heat transfer of outer walls 

100 facing the ambient. 

101 alpha_comb_outer_ow : float [W/(m2K)] 

102 Area-weighted combined coefficient of heat transfer of outer walls 

103 facing the ambient. 

104 ua_value_ow : float [W/K] 

105 U-Value times outer wall area. 

106 r_conv_inner_ow : float [K/W] 

107 Sum of convective resistances for all outer walls facing the 

108 inside of this thermal zone. 

109 r_rad_inner_ow : float [K/W] 

110 Sum of radiative resistances for all outer walls facing the 

111 inside of this thermal zone. 

112 r_comb_inner_ow : float [K/W] 

113 Sum of combined resistances for all outer walls facing the 

114 inside of this thermal zone. 

115 r_conv_outer_ow : float [K/W] 

116 Sum of convective resistances for all outer walls facing the 

117 ambient. 

118 r_rad_outer_ow : float [K/W] 

119 Sum of radiative resistances for all outer walls facing the 

120 ambient. 

121 r_comb_outer_ow : float [K/W] 

122 Sum of combined resistances for all outer walls facing the 

123 ambient. 

124 r1_ow : float [K/W] 

125 Lumped resistance of outer walls no heat transfer coefficients for 

126 convection and radiation are accounted in this resistance. 

127 r_rest_ow : float [K/W] 

128 Lumped remaining resistance of outer walls between r1_ow and c1_ow no 

129 heat transfer coefficients for convection and radiation are accounted 

130 in this resistance. 

131 c1_ow : float [J/K] 

132 Lumped capacity of outer walls. 

133 weightfactor_ow : list of floats 

134 Weightfactors of outer walls (UA-Value of walls with same orientation 

135 and tilt divided by ua_value_ow) 

136 weightfactor_ground : list of floats 

137 Weightfactors of groundfloors (UA-Value of groundfloor divided by 

138 ua_value_ow). 

139 tilt_facade : list of floats [degree] 

140 Tilt of outer walls against the horizontal. 

141 orientation_facade : list of floats [degree] 

142 Orientation of outer walls (Azimuth). 

143 0 - North 

144 90 - East 

145 180 - South 

146 270 - West 

147 outer_wall_areas : list of floats [m2] 

148 Area of all outer walls in one list. 

149 ir_emissivity_outer_ow : float 

150 Area-weighted ir emissivity of outer wall facing the ambient. 

151 ir_emissivity_inner_ow : float 

152 Area-weighted ir emissivity of outer walls facing the thermal zone. 

153 solar_absorp_ow : float 

154 Area-weighted solar absorption of outer walls facing the ambient. 

155 

156 Windows 

157 

158 area_win : float [m2] 

159 Area of all windows. 

160 alpha_conv_inner_win : float [W/(m2K)] 

161 Area-weighted convective coefficient of heat transfer of windows 

162 facing the inside of this thermal zone. 

163 alpha_rad_inner_win : float [W/(m2K)] 

164 Area-weighted radiative coefficient of heat transfer of windows 

165 facing the inside of this thermal zone. 

166 alpha_comb_inner_win : float [W/(m2K)] 

167 Area-weighted combined coefficient of heat transfer of windows facing 

168 the inside of this thermal zone. 

169 ratio_conv_rad_inner_win : float [-] 

170 Ratio for windows between convective and radiative heat emission, 

171 given in VDI 6007-3 

172 alpha_conv_outer_win : float [W/(m2K)] 

173 Area-weighted convective coefficient of heat transfer of windows 

174 facing the ambient. 

175 alpha_rad_outer_win : float [W/(m2K)] 

176 Area-weighted radiative coefficient of heat transfer of windows 

177 facing the ambient. 

178 alpha_comb_outer_win : float [W/(m2K)] 

179 Area-weighted combined coefficient of heat transfer of windows facing 

180 the ambient. 

181 ua_value_win : float [W/K] 

182 U-Value times window wall area. 

183 u_value_win : float [W/(m2K)] 

184 Area weighted U-Value of windows. 

185 r_conv_inner_win : float [K/W] 

186 Sum of convective resistances for all windows facing the 

187 inside of this thermal zone. 

188 r_rad_inner_win : float [K/W] 

189 Sum of radiative resistances for all windows facing the 

190 inside of this thermal zone. 

191 r_comb_inner_win : float [K/W] 

192 Sum of combined resistances for all windows facing the 

193 inside of this thermal zone. 

194 r_conv_outer_win : float [K/W] 

195 Sum of convective resistances for all windows facing the 

196 ambient. 

197 r_rad_outer_win : float [K/W] 

198 Sum of radiative resistances for all windows facing the 

199 ambient. 

200 r_comb_outer_win : float [K/W] 

201 Sum of combined resistances for all windows facing the 

202 ambient. 

203 r1_win : float [K/W] 

204 Lumped resistance of windows, no heat transfer coefficients for 

205 convection and radiation are accounted in this resistance. 

206 weightfactor_win : list of floats 

207 Weightfactors of windows (UA-Value of windows with same orientation 

208 and tilt divided by ua_value_win or ua_value_win+ua_value_ow, 

209 depending if windows is lumped/merged into the walls or not) 

210 window_areas : list of floats [m2] 

211 Area of all windows in one list, if the windows are merged into the 

212 outer wall this list will be full of zeros 

213 transparent_areas : list of floats [m2] 

214 Area of all transparent elements (most likely windows) in one list, 

215 this list will be always filled with the areas, independent if 

216 windows are merged into walls or not. 

217 solar_absorp_win : float 

218 Area-weighted solar absorption for windows. (typically 0.0) 

219 ir_emissivity_win : float 

220 Area-weighted ir_emissivity for windows. Can be used for windows 

221 facing the thermal zone and the ambient. 

222 weighted_g_value : float 

223 Area-weighted g-Value of all windows. 

224 shading_max_irr : list of float [W/m2] 

225 Threshold value above which the sunblind becomes active for the whole zone. 

226 Threshold regards to the incoming irradiation level with the window direction. 

227 This value does not account for heat flux due to the outside temperature. 

228 shading_g_total : list of float 

229 Factor representing how much of the actual solar irradiation goes through 

230 the sunblind and enters the window element, for the case, that the sunblind is 

231 activated. Defaults to 1, i.e. no shading is active. 

232 

233 Misc values: 

234 

235 alpha_rad_inner_mean : float [W/(m2K)] 

236 Area-weighted radiative coefficient of all surfaces facing the 

237 inside of this thermal zone (OuterWalls, Windows, InnerWalls, ...). 

238 alpha_rad_outer_mean : float [W/(m2K)] 

239 Area-weighted radiative coefficient of all surfaces facing the 

240 ambient (OuterWalls, Windows, ...). 

241 heat_load : [W] 

242 Static heat load of the thermal zone. 

243 heat_load_outside_factor : float [W/K] 

244 Factor needed for recalculation of the heat load of the thermal zone. 

245 This can be used to recalculate the thermalzones heat load inside 

246 Modelica export for parametric studies. This works only together with 

247 heat_load_ground_factor. 

248 

249 heat_load = heat_load_outside_factor * (t_inside - t_outside) + 

250 heat_load_ground_factor * (t_inside - t_ground). 

251 heat_load_ground_factor : float [W/K] 

252 Factor needed for recalculation of the heat load of the thermal zone. 

253 This can be used to recalculate the thermalzones heat load inside 

254 Modelica export for parametric studies. See heat_load_outside_factor. 

255 facade_areas : list of floats [m2] 

256 List containing the area of each facade (with same tilt and 

257 orientation) this includes also roofs and ground floors and windows. 

258 n_outer : int 

259 Number of total facades with different combination of tilt and 

260 orientation, including Rooftops and GroundFloors 

261 tilt_facade : list of floats [degree] 

262 Tilt of facades against the horizontal. 

263 orientation_facade : list of floats [degree] 

264 Orientation of facades (Azimuth). 

265 0 - North 

266 90 - East 

267 180 - South 

268 270 - West 

269 

270 """ 

271 

272 def __init__(self, thermal_zone, merge_windows, t_bt, t_bt_layer=7): 

273 """Constructor for TwoElement""" 

274 

275 self.internal_id = random.random() 

276 

277 self.thermal_zone = thermal_zone 

278 self.merge_windows = merge_windows 

279 self.t_bt = t_bt 

280 self.t_bt_layer = t_bt_layer 

281 

282 # Attributes of inner walls 

283 self.area_iw = 0.0 

284 

285 # coefficient of heat transfer facing the inside of this thermal zone 

286 self.alpha_conv_inner_iw = 0.0 

287 self.alpha_rad_inner_iw = 0.0 

288 self.alpha_comb_inner_iw = 0.0 

289 # coefficient of heat transfer facing the adjacent thermal zone 

290 self.alpha_conv_outer_iw = 0.0 

291 self.alpha_rad_outer_iw = 0.0 

292 self.alpha_comb_outer_iw = 0.0 

293 

294 # UA-Value 

295 self.ua_value_iw = 0.0 

296 

297 # resistances for heat transfer facing the inside of this thermal zone 

298 self.r_conv_inner_iw = 0.0 

299 self.r_rad_inner_iw = 0.0 

300 self.r_comb_inner_iw = 0.0 

301 self.r_conv_outer_iw = 0.0 

302 self.r_rad_outer_iw = 0.0 

303 self.r_comb_outer_iw = 0.0 

304 

305 # lumped resistance/capacity 

306 self.r1_iw = 0.0 

307 self.c1_iw = 0.0 

308 

309 # Attributes for outer walls (OuterWall, Rooftop, GroundFloor) 

310 self.area_ow = 0.0 

311 

312 # coefficient of heat transfer facing the inside of this thermal zone 

313 self.alpha_conv_inner_ow = 0.0 

314 self.alpha_rad_inner_ow = 0.0 

315 self.alpha_comb_inner_ow = 0.0 

316 

317 # coefficient of heat transfer facing the ambient 

318 self.alpha_conv_outer_ow = 0.0 

319 self.alpha_rad_outer_ow = 0.0 

320 self.alpha_comb_outer_ow = 0.0 

321 

322 # UA-Value 

323 self.ua_value_ow = 0.0 

324 

325 # resistances for heat transfer facing the inside of this thermal zone 

326 self.r_conv_inner_ow = 0.0 

327 self.r_rad_inner_ow = 0.0 

328 self.r_comb_inner_ow = 0.0 

329 

330 # resistances for heat transfer facing the ambient 

331 self.r_conv_outer_ow = 0.0 

332 self.r_rad_outer_ow = 0.0 

333 self.r_comb_outer_ow = 0.0 

334 

335 # lumped resistances/capacity 

336 self.r1_ow = 0.0 

337 self.r_rest_ow = 0.0 

338 self.c1_ow = 0.0 

339 self.r_total_ow = 0.0 

340 

341 # Optical properties 

342 self.ir_emissivity_outer_ow = 0.0 

343 self.ir_emissivity_inner_ow = 0.0 

344 self.solar_absorp_ow = 0.0 

345 

346 # Additional attributes 

347 self.weightfactor_ow = [] 

348 self.weightfactor_ground = 0.0 

349 self.outer_wall_areas = [] 

350 

351 # Attributes for windows 

352 self.area_win = 0.0 

353 

354 # coefficient of heat transfer facing the inside of this thermal zone 

355 self.alpha_conv_inner_win = 0.0 

356 self.alpha_rad_inner_win = 0.0 

357 self.alpha_comb_inner_win = 0.0 

358 self.ratio_conv_rad_inner_win = 0.0 

359 

360 # coefficient of heat transfer facing the ambient 

361 self.alpha_conv_outer_win = 0.0 

362 self.alpha_rad_outer_win = 0.0 

363 self.alpha_comb_outer_win = 0.0 

364 

365 # UA-Value 

366 self.ua_value_win = 0.0 

367 self.u_value_win = 0.0 

368 

369 # resistances for heat transfer facing the inside of this thermal zone 

370 self.r_conv_inner_win = 0.0 

371 self.r_rad_inner_win = 0.0 

372 self.r_comb_inner_win = 0.0 

373 

374 # resistances for heat transfer facing the ambient 

375 self.r_conv_outer_win = 0.0 

376 self.r_rad_outer_win = 0.0 

377 self.r_comb_outer_win = 0.0 

378 

379 # lumped resistances/capacity 

380 self.r1_win = 0.0 

381 

382 # Optical properties 

383 self.ir_emissivity_win = 0.0 

384 self.ir_emissivity_inner_win = 0.0 

385 self.solar_absorp_win = 0.0 

386 

387 # Additional attributes 

388 self.weightfactor_win = [] 

389 self.window_areas = [] 

390 self.transparent_areas = [] 

391 self.shading_g_total = [] 

392 self.shading_max_irr = [] 

393 self.weighted_g_value = 0.0 

394 

395 # Misc values 

396 

397 self.alpha_rad_inner_mean = 0.0 

398 self.alpha_rad_outer_mean = 0.0 

399 self.n_outer = 0 

400 self.facade_areas = [] 

401 self.tilt_facade = [] 

402 self.orientation_facade = [] 

403 self.heat_load = 0.0 

404 self.cool_load = 0.0 

405 self.heat_load_outside_factor = 0.0 

406 self.heat_load_ground_factor = 0.0 

407 

408 def calc_attributes(self): 

409 """Calls all necessary function to calculate model attributes""" 

410 outer_walls = ( 

411 self.thermal_zone.outer_walls 

412 + self.thermal_zone.ground_floors 

413 + self.thermal_zone.rooftops 

414 + self.thermal_zone.find_izes_outer() 

415 ) 

416 

417 for out_wall in outer_walls: 

418 out_wall.calc_equivalent_res(t_bt=self.t_bt_layer) 

419 out_wall.calc_ua_value() 

420 for win in self.thermal_zone.windows: 

421 win.calc_equivalent_res() 

422 win.calc_ua_value() 

423 for inner_wall in ( 

424 self.thermal_zone.inner_walls 

425 + self.thermal_zone.floors 

426 + self.thermal_zone.ceilings 

427 + self.nzbs_for_iw 

428 ): 

429 inner_wall.calc_equivalent_res(t_bt=self.t_bt_layer) 

430 inner_wall.calc_ua_value() 

431 

432 self.set_calc_default() 

433 if len(outer_walls) < 1: 

434 warnings.warn( 

435 "No walls are defined as outer walls for thermal " 

436 "zone " 

437 + str(self.thermal_zone.name) 

438 + " in building " 

439 + str(self.thermal_zone.parent.name) 

440 + ", please be careful with results. In addition " 

441 + "this might lead to RunTimeErrors" 

442 ) 

443 else: 

444 self._sum_outer_wall_elements() 

445 if ( 

446 len( 

447 self.thermal_zone.inner_walls 

448 + self.thermal_zone.floors 

449 + self.thermal_zone.ceilings 

450 + self.nzbs_for_iw 

451 ) 

452 < 1 

453 ): 

454 warnings.warn( 

455 "For thermal zone " 

456 + self.thermal_zone.name 

457 + " in building " 

458 + self.thermal_zone.parent.name 

459 + ", no inner walls have been defined." 

460 ) 

461 else: 

462 self._sum_inner_wall_elements() 

463 self._calc_inner_elements() 

464 if len(self.thermal_zone.windows) < 1: 

465 warnings.warn( 

466 "For thermal zone " 

467 + self.thermal_zone.name 

468 + " in building " 

469 + self.thermal_zone.parent.name 

470 + ", no windows have been defined." 

471 ) 

472 else: 

473 self._sum_window_elements() 

474 if len(outer_walls) >= 1 or len(self.thermal_zone.windows) >= 1: 

475 self._calc_outer_elements() 

476 self._calc_wf() 

477 self._calc_mean_values() 

478 if len(self.thermal_zone.interzonal_elements) >= 1: 

479 warnings.warn( 

480 "For thermal zone " 

481 + self.thermal_zone.name 

482 + " in building " 

483 + self.thermal_zone.parent.name 

484 + ", interzonal elements have been defined. TwoElement export " 

485 + "will treat them as outer walls or inner walls depending on " 

486 + "the project parameter 'method_interzonal_export'. Consider " 

487 + "using FiveElement instead." 

488 ) 

489 self._calc_number_of_elements() 

490 self._fill_zone_lists() 

491 self._calc_heat_load() 

492 self.cool_load = -self.heat_load 

493 

494 return True 

495 

496 @staticmethod 

497 def _calc_parallel_connection(element_list, omega, mode='iw'): 

498 """Parallel connection of walls according to VDI 6007 

499 

500 Calculates the parallel connection of wall elements according to VDI 

501 6007, resulting in R1 and C1 (equation 23, 24). 

502 

503 Parameters 

504 ---------- 

505 element_list : list 

506 List of inner or outer walls 

507 omega : float 

508 VDI 6007 frequency 

509 mode : str 

510 'ow' uses r1 and c1_korr 

511 'iw' uses r1 and c1 (function falls back here for other strings) 

512 

513 Returns 

514 ------- 

515 r1 : float [K/W] 

516 VDI 6007 resistance for all inner or outer walls 

517 c1 : float [K/W] 

518 VDI 6007 capacity all for inner or outer walls 

519 """ 

520 

521 for wall_count in range(len(element_list) - 1): 

522 

523 if wall_count == 0: 

524 r1_before = element_list[wall_count].r1 

525 if mode == 'ow': 

526 c1_before = element_list[wall_count].c1_korr 

527 else: 

528 c1_before = element_list[wall_count].c1 

529 else: 

530 r1_before = r1 

531 c1_before = c1 

532 r1_add = element_list[wall_count + 1].r1 

533 if mode == 'ow': 

534 c1_add = element_list[wall_count + 1].c1_korr 

535 else: 

536 c1_add = element_list[wall_count + 1].c1 

537 

538 r1 = ( 

539 r1_before * c1_before ** 2 + r1_add * c1_add ** 2 

540 + omega ** 2 * r1_before * r1_add * (r1_before + r1_add) 

541 * c1_before ** 2 * c1_add ** 2 

542 ) / ( 

543 (c1_before + c1_add) ** 2 

544 + omega ** 2 * (r1_before + r1_add) ** 2 * c1_before ** 2 

545 * c1_add ** 2 

546 ) 

547 

548 c1 = ( 

549 (c1_before + c1_add) ** 2 

550 + omega ** 2 * (r1_before + r1_add) ** 2 * c1_before ** 2 

551 * c1_add ** 2 

552 ) / ( 

553 c1_before + c1_add 

554 + omega ** 2 

555 * (r1_before ** 2 * c1_before + r1_add ** 2 * c1_add) 

556 * c1_before * c1_add 

557 ) 

558 

559 return r1, c1 

560 

561 def _sum_outer_wall_elements(self): 

562 """Sum attributes for outer wall elements 

563 

564 This function sums and computes the area-weighted values, 

565 where necessary (the class doc string) for coefficients of heat 

566 transfer, resistances, areas and UA-Values. 

567 

568 For TwoElement model it treats rooftops, ground floor, outer walls 

569 and zone borders to neighboured zones (if this zone is heated) 

570 as one kind of wall type. 

571 

572 """ 

573 # treat all outer wall types identical 

574 

575 outer_walls = ( 

576 self.thermal_zone.outer_walls 

577 + self.thermal_zone.ground_floors 

578 + self.thermal_zone.rooftops 

579 + self.thermal_zone.find_izes_outer() 

580 ) 

581 

582 self.area_ow = ( 

583 sum(out_wall.area for out_wall in outer_walls) 

584 ) 

585 

586 self.ua_value_ow = ( 

587 sum(out_wall.ua_value for out_wall in outer_walls) 

588 ) 

589 

590 self.r_total_ow = 1 / self.ua_value_ow 

591 

592 # values facing the inside of the thermal zone 

593 

594 self.r_conv_inner_ow = 1 / ( 

595 sum(1 / out_wall.r_inner_conv for out_wall in outer_walls) 

596 ) 

597 

598 self.r_rad_inner_ow = 1 / ( 

599 sum(1 / out_wall.r_inner_rad for out_wall in outer_walls) 

600 ) 

601 

602 self.r_comb_inner_ow = 1 / ( 

603 sum(1 / out_wall.r_inner_comb for out_wall in outer_walls) 

604 ) 

605 

606 self.ir_emissivity_inner_ow = ( 

607 sum( 

608 out_wall.layer[0].material.ir_emissivity * out_wall.area 

609 for out_wall in outer_walls 

610 ) 

611 ) / self.area_ow 

612 

613 self.alpha_conv_inner_ow = 1 / (self.r_conv_inner_ow * self.area_ow) 

614 self.alpha_rad_inner_ow = 1 / (self.r_rad_inner_ow * self.area_ow) 

615 self.alpha_comb_inner_ow = 1 / (self.r_comb_inner_ow * self.area_ow) 

616 

617 # values facing the ambient 

618 # ground floor does not have any coefficients on ambient side 

619 

620 _area_ow_rt = sum( 

621 out_wall.area for out_wall in self.thermal_zone.outer_walls 

622 ) + sum( 

623 roof.area for roof in self.thermal_zone.rooftops 

624 ) 

625 

626 _area_ow_rt_nzb = _area_ow_rt + sum( 

627 roof.area for roof in self.thermal_zone.find_izes_outer() 

628 ) 

629 

630 self.r_conv_outer_ow = 1 / ( 

631 sum(1 / out_wall.r_outer_conv for out_wall in self.thermal_zone.outer_walls) 

632 + sum(1 / roof.r_outer_conv for roof in self.thermal_zone.rooftops) 

633 + sum(1 / nzb.r_outer_conv for nzb in self.thermal_zone.find_izes_outer()) 

634 ) 

635 self.r_rad_outer_ow = 1 / ( 

636 sum(1 / out_wall.r_outer_rad for out_wall in self.thermal_zone.outer_walls) 

637 + sum(1 / roof.r_outer_rad for roof in self.thermal_zone.rooftops) 

638 + sum(1 / nzb.r_outer_rad for nzb in self.thermal_zone.find_izes_outer()) 

639 ) 

640 self.r_comb_outer_ow = 1 / ( 

641 sum(1 / out_wall.r_outer_comb for out_wall in self.thermal_zone.outer_walls) 

642 + sum(1 / roof.r_outer_comb for roof in self.thermal_zone.rooftops) 

643 + sum(1 / nzb.r_outer_comb for nzb in self.thermal_zone.find_izes_outer()) 

644 ) 

645 

646 self.ir_emissivity_outer_ow = ( 

647 sum( 

648 out_wall.layer[-1].material.ir_emissivity * out_wall.area 

649 for out_wall in self.thermal_zone.outer_walls 

650 ) 

651 + sum( 

652 roof.layer[-1].material.ir_emissivity * roof.area 

653 for roof in self.thermal_zone.rooftops 

654 ) 

655 ) / _area_ow_rt 

656 

657 self.solar_absorp_ow = ( 

658 sum( 

659 out_wall.layer[-1].material.solar_absorp * out_wall.area 

660 for out_wall in self.thermal_zone.outer_walls 

661 ) 

662 + sum( 

663 roof.layer[-1].material.solar_absorp * roof.area 

664 for roof in self.thermal_zone.rooftops 

665 ) 

666 ) / _area_ow_rt 

667 

668 self.alpha_conv_outer_ow = 1 / (self.r_conv_outer_ow * _area_ow_rt_nzb) 

669 self.alpha_rad_outer_ow = 1 / (self.r_rad_outer_ow * _area_ow_rt_nzb) 

670 self.alpha_comb_outer_ow = 1 / (self.r_comb_outer_ow * _area_ow_rt_nzb) 

671 

672 def _sum_inner_wall_elements(self): 

673 """Sum attributes for interior elements 

674 

675 This function sums and computes the area-weighted values, 

676 where necessary (the class doc string) for coefficients of heat 

677 transfer, resistances, areas and UA-Values. 

678 

679 It treats all inner walls identical. 

680 

681 Function is identical for TwoElement, ThreeElement and FourElement. 

682 

683 Calculation of adjacent thermal zones and thus these attributes are 

684 currently not supported. 

685 

686 """ 

687 self.area_iw = ( 

688 sum(in_wall.area for in_wall in self.thermal_zone.inner_walls) 

689 + sum(floor.area for floor in self.thermal_zone.floors) 

690 + sum(ceiling.area for ceiling in self.thermal_zone.ceilings) 

691 + sum(nzb.area for nzb in self.nzbs_for_iw) 

692 ) 

693 

694 self.ua_value_iw = ( 

695 sum(in_wall.ua_value for in_wall in self.thermal_zone.inner_walls) 

696 + sum(floor.ua_value for floor in self.thermal_zone.floors) 

697 + sum(ceiling.ua_value for ceiling in self.thermal_zone.ceilings) 

698 + sum(nzb.ua_value for nzb in self.nzbs_for_iw) 

699 ) 

700 

701 # values facing the inside of the thermal zone 

702 

703 self.r_conv_inner_iw = 1 / ( 

704 sum(1 / in_wall.r_inner_conv for in_wall in self.thermal_zone.inner_walls) 

705 + sum(1 / floor.r_inner_conv for floor in self.thermal_zone.floors) 

706 + sum(1 / ceiling.r_inner_conv for ceiling in self.thermal_zone.ceilings) 

707 + sum(1 / nzb.r_inner_conv for nzb in self.nzbs_for_iw) 

708 ) 

709 

710 self.r_rad_inner_iw = 1 / ( 

711 sum(1 / in_wall.r_inner_rad for in_wall in self.thermal_zone.inner_walls) 

712 + sum(1 / floor.r_inner_rad for floor in self.thermal_zone.floors) 

713 + sum(1 / ceiling.r_inner_rad for ceiling in self.thermal_zone.ceilings) 

714 + sum(1 / nzb.r_inner_rad for nzb in self.nzbs_for_iw) 

715 ) 

716 

717 self.r_comb_inner_iw = 1 / ( 

718 sum(1 / in_wall.r_inner_comb for in_wall in self.thermal_zone.inner_walls) 

719 + sum(1 / floor.r_inner_comb for floor in self.thermal_zone.floors) 

720 + sum(1 / ceiling.r_inner_comb for ceiling in self.thermal_zone.ceilings) 

721 + sum(1 / nzb.r_inner_comb for nzb in self.nzbs_for_iw) 

722 ) 

723 

724 self.ir_emissivity_inner_iw = ( 

725 sum( 

726 in_wall.layer[0].material.ir_emissivity * in_wall.area 

727 for in_wall in self.thermal_zone.inner_walls 

728 ) 

729 + sum( 

730 floor.layer[0].material.ir_emissivity * floor.area 

731 for floor in self.thermal_zone.floors 

732 ) 

733 + sum( 

734 ceiling.layer[0].material.ir_emissivity * ceiling.area 

735 for ceiling in self.thermal_zone.ceilings 

736 ) 

737 + sum( 

738 nzb.layer[0].material.ir_emissivity * nzb.area 

739 for nzb in self.nzbs_for_iw 

740 ) 

741 ) / self.area_iw 

742 

743 self.alpha_conv_inner_iw = 1 / (self.r_conv_inner_iw * self.area_iw) 

744 self.alpha_rad_inner_iw = 1 / (self.r_rad_inner_iw * self.area_iw) 

745 self.alpha_comb_inner_iw = 1 / (self.r_comb_inner_iw * self.area_iw) 

746 

747 # adjacent thermal zones are not supported! 

748 

749 def _sum_window_elements(self): 

750 """Sum attributes for window elements 

751 

752 This function sums and computes the area-weighted values, 

753 where necessary (the class doc string) for coefficients of heat 

754 transfer, resistances, areas and UA-Values. 

755 

756 Function is identical for TwoElement, ThreeElement and FourElement. 

757 """ 

758 

759 self.area_win = sum(win.area for win in self.thermal_zone.windows) 

760 self.ua_value_win = sum(win.ua_value for win in self.thermal_zone.windows) 

761 self.u_value_win = self.ua_value_win / self.area_win 

762 

763 self.r_total_win = 1 / self.ua_value_win 

764 # values facing the inside of the thermal zone 

765 

766 self.r_conv_inner_win = 1 / ( 

767 sum(1 / win.r_inner_conv for win in self.thermal_zone.windows) 

768 ) 

769 

770 self.r_rad_inner_win = 1 / ( 

771 sum(1 / win.r_inner_rad for win in self.thermal_zone.windows) 

772 ) 

773 

774 self.r_comb_inner_win = 1 / ( 

775 sum(1 / win.r_inner_comb for win in self.thermal_zone.windows) 

776 ) 

777 

778 self.ir_emissivity_inner_win = ( 

779 sum( 

780 win.layer[0].material.ir_emissivity * win.area 

781 for win in self.thermal_zone.windows 

782 ) 

783 / self.area_win 

784 ) 

785 

786 self.alpha_conv_inner_win = 1 / (self.r_conv_inner_win * self.area_win) 

787 self.alpha_rad_inner_win = 1 / (self.r_rad_inner_win * self.area_win) 

788 self.alpha_comb_inner_win = 1 / (self.r_comb_inner_win * self.area_win) 

789 self.ratio_conv_rad_inner_win = ( 

790 sum(win.a_conv * win.area for win in self.thermal_zone.windows) 

791 / self.area_win 

792 ) 

793 

794 # values facing the ambient 

795 

796 self.r_conv_outer_win = 1 / ( 

797 sum(1 / win.r_outer_conv for win in self.thermal_zone.windows) 

798 ) 

799 

800 self.r_rad_outer_win = 1 / ( 

801 sum(1 / win.r_outer_rad for win in self.thermal_zone.windows) 

802 ) 

803 

804 self.r_comb_outer_win = 1 / ( 

805 sum(1 / win.r_outer_comb for win in self.thermal_zone.windows) 

806 ) 

807 

808 self.ir_emissivity_win = ( 

809 sum( 

810 win.layer[-1].material.ir_emissivity * win.area 

811 for win in self.thermal_zone.windows 

812 ) 

813 / self.area_win 

814 ) 

815 

816 self.solar_absorp_win = ( 

817 sum( 

818 win.layer[-1].material.solar_absorp * win.area 

819 for win in self.thermal_zone.windows 

820 ) 

821 / self.area_win 

822 ) 

823 

824 self.weighted_g_value = ( 

825 sum(win.g_value * win.area for win in self.thermal_zone.windows) 

826 / self.area_win 

827 ) 

828 

829 self.alpha_conv_outer_win = 1 / (self.r_conv_outer_win * self.area_win) 

830 self.alpha_rad_outer_win = 1 / (self.r_rad_outer_win * self.area_win) 

831 self.alpha_comb_outer_win = 1 / (self.r_comb_outer_win * self.area_win) 

832 

833 def _calc_outer_elements(self): 

834 """Lumped parameter for outer wall elements 

835 

836 Calculates all necessary parameters for outer walls. This includes 

837 OuterWalls, GroundFloors and Rooftops. 

838 Attributes 

839 ---------- 

840 omega : float [1/s] 

841 angular frequency with given time period. 

842 outer_walls : list 

843 List containing all TEASER Wall instances that are treated as same 

844 outer wall type. In case of TwoElement model OuterWalls, 

845 GroundFloors, Rooftops 

846 """ 

847 

848 omega = 2 * math.pi / 86400 / self.t_bt 

849 

850 outer_walls = ( 

851 self.thermal_zone.outer_walls 

852 + self.thermal_zone.ground_floors 

853 + self.thermal_zone.rooftops 

854 + self.thermal_zone.find_izes_outer() 

855 ) 

856 

857 if 0 < len(outer_walls) <= 1: 

858 # only one outer wall, no need to calculate chain matrix 

859 self.r1_ow = outer_walls[0].r1 

860 self.c1_ow = outer_walls[0].c1_korr 

861 elif len(outer_walls) > 1: 

862 # more than one outer wall, calculate chain matrix 

863 self.r1_ow, self.c1_ow = self._calc_parallel_connection( 

864 outer_walls, omega, mode='ow' 

865 ) 

866 

867 if self.merge_windows is False: 

868 try: 

869 

870 if len(self.thermal_zone.windows) > 0: 

871 self.r1_win = 1 / sum( 

872 (1 / win.r1) for win in self.thermal_zone.windows 

873 ) 

874 if len(outer_walls) > 0: 

875 conduction = 1 / sum( 

876 (1 / element.r_conduc) for element in outer_walls 

877 ) 

878 

879 self.r_rest_ow = conduction - self.r1_ow 

880 

881 except RuntimeError: 

882 print( 

883 "As no outer walls or no windows are defined lumped " 

884 "parameter cannot be calculated" 

885 ) 

886 

887 if self.merge_windows is True: 

888 

889 try: 

890 

891 if ( 

892 len(self.thermal_zone.windows) > 0 

893 and len(outer_walls) > 0 

894 ): 

895 self.r1_win = 1 / sum( 

896 1 / (win.r1 / 6) for win in self.thermal_zone.windows 

897 ) 

898 

899 self.r1_ow = 1 / (1 / self.r1_ow + 1 / self.r1_win) 

900 

901 self.r_total_ow = 1 / (self.ua_value_ow + self.ua_value_win) 

902 self.r_rest_ow = ( 

903 self.r_total_ow 

904 - self.r1_ow 

905 - 1 

906 / ( 

907 ( 

908 (1 / self.r_conv_inner_ow) 

909 + (1 / self.r_conv_inner_win) 

910 + (1 / self.r_rad_inner_ow) 

911 + (1 / self.r_rad_inner_win) 

912 ) 

913 ) 

914 ) - 1 / (self.alpha_comb_outer_ow * self.area_ow) 

915 

916 self.ir_emissivity_inner_ow = ( 

917 self.ir_emissivity_inner_ow * self.area_ow 

918 + self.ir_emissivity_inner_win * self.area_win 

919 ) / (self.area_ow + self.area_win) 

920 

921 self.ir_emissivity_outer_ow = ( 

922 self.ir_emissivity_outer_ow * self.area_ow 

923 + self.ir_emissivity_win * self.area_win 

924 ) / (self.area_ow + self.area_win) 

925 

926 self.solar_absorp_ow = ( 

927 self.solar_absorp_ow * self.area_ow 

928 + self.solar_absorp_win * self.area_win 

929 ) / (self.area_ow + self.area_win) 

930 

931 except RuntimeError: 

932 print( 

933 "As no outer walls or no windows are defined lumped " 

934 "parameter cannot be calculated" 

935 ) 

936 

937 def _calc_inner_elements(self): 

938 """Lumped parameter for outer wall elements 

939 

940 Calculates all necessary parameters for inner walls. This includes 

941 InnerWalls, Ceilings and Floors. 

942 

943 Attributes 

944 ---------- 

945 omega : float [1/s] 

946 angular frequency with given time period. 

947 outer_walls : list 

948 List containing all TEASER Wall instances that are treated as same 

949 outer wall type. In case of TwoElement model OuterWalls, 

950 GroundFloors, Rooftops 

951 """ 

952 

953 omega = 2 * math.pi / 86400 / self.t_bt 

954 

955 inner_walls = ( 

956 self.thermal_zone.inner_walls 

957 + self.thermal_zone.floors 

958 + self.thermal_zone.ceilings 

959 + self.nzbs_for_iw 

960 ) 

961 

962 for in_wall in inner_walls: 

963 in_wall.calc_equivalent_res() 

964 in_wall.calc_ua_value() 

965 

966 if 0 < len(inner_walls) <= 1: 

967 # only one outer wall, no need to calculate chain matrix 

968 self.r1_iw = inner_walls[0].r1 

969 self.c1_iw = inner_walls[0].c1_korr 

970 elif len(inner_walls) > 1: 

971 # more than one outer wall, calculate chain matrix 

972 self.r1_iw, self.c1_iw = self._calc_parallel_connection( 

973 inner_walls, omega, mode='iw' 

974 ) 

975 

976 def _calc_wf(self): 

977 """Weightfactors for outer elements(walls, roof, ground floor, windows) 

978 

979 Calculates the weightfactors of the outer walls, including ground and 

980 windows. 

981 

982 Parameters 

983 ---------- 

984 outer_walls : list 

985 List containing all TEASER Wall instances that are treated as same 

986 outer wall type. In case of TwoElement model OuterWalls, 

987 GroundFloors, Rooftops 

988 """ 

989 

990 outer_walls = ( 

991 self.thermal_zone.outer_walls 

992 + self.thermal_zone.ground_floors 

993 + self.thermal_zone.rooftops 

994 + self.thermal_zone.find_izes_outer() 

995 ) 

996 

997 if self.merge_windows is True: 

998 

999 for wall in outer_walls: 

1000 wall.wf_out = wall.ua_value / (self.ua_value_ow + self.ua_value_win) 

1001 

1002 for win in self.thermal_zone.windows: 

1003 win.wf_out = win.ua_value / (self.ua_value_ow + self.ua_value_win) 

1004 

1005 self.weightfactor_ground = sum( 

1006 gf.wf_out for gf in self.thermal_zone.ground_floors 

1007 ) 

1008 

1009 elif self.merge_windows is False: 

1010 

1011 for wall in outer_walls: 

1012 wall.wf_out = wall.ua_value / self.ua_value_ow 

1013 

1014 for win in self.thermal_zone.windows: 

1015 win.wf_out = win.ua_value / self.ua_value_win 

1016 

1017 self.weightfactor_ground = sum( 

1018 gf.wf_out for gf in self.thermal_zone.ground_floors 

1019 ) 

1020 

1021 else: 

1022 raise ValueError("specify merge window method correctly") 

1023 

1024 def _calc_mean_values(self): 

1025 """Calculates mean values for inner and outer elements 

1026 

1027 This function calculates mean values inside the thermal zone (e.g. 

1028 the mean value for coefficient of radiative heat transfer between 

1029 inner and outer walls 

1030 """ 

1031 

1032 self.alpha_rad_inner_mean = ( 

1033 self.area_ow * self.alpha_rad_inner_ow 

1034 + self.area_win * self.alpha_rad_inner_win 

1035 + self.area_iw * self.alpha_rad_inner_iw 

1036 ) / (self.area_ow + self.area_win + self.area_iw) 

1037 self.alpha_rad_outer_mean = ( 

1038 self.area_ow * self.alpha_rad_outer_ow 

1039 + self.area_win * self.alpha_rad_outer_win 

1040 ) / (self.area_ow + self.area_win) 

1041 

1042 def _calc_number_of_elements(self): 

1043 """Calculates the number of outer elements with different tilt/orient 

1044 

1045 This function calculates the number of outer elements with a 

1046 different combination of orientation and tilt, this includes the 

1047 rooftops, ground floors, and borders to unheated neighboured zones if 

1048 this zone is heated. 

1049 """ 

1050 

1051 outer_elements = ( 

1052 self.thermal_zone.outer_walls 

1053 + self.thermal_zone.find_izes_outer() 

1054 + self.thermal_zone.ground_floors 

1055 + self.thermal_zone.rooftops 

1056 + self.thermal_zone.windows 

1057 ) 

1058 

1059 tilt_orient = [] 

1060 for element in outer_elements: 

1061 tilt_orient.append((element.orientation, element.tilt)) 

1062 self.n_outer = len(list(set(tilt_orient))) 

1063 

1064 def _fill_zone_lists(self): 

1065 """Fills lists like weightfactors and tilt, orientation 

1066 

1067 Fills the lists of a zone according to orientation and tilt of the 

1068 zone. Therefore it compares orientation and tilt of all outer 

1069 elements and then creates lists for zone weightfactors, orientation, 

1070 tilt, ares and sunblinds.""" 

1071 

1072 outer_elements = ( 

1073 self.thermal_zone.outer_walls 

1074 + self.thermal_zone.find_izes_outer() 

1075 + self.thermal_zone.ground_floors 

1076 + self.thermal_zone.rooftops 

1077 + self.thermal_zone.windows 

1078 ) 

1079 

1080 tilt_orient = [] 

1081 for element in outer_elements: 

1082 tilt_orient.append((element.orientation, element.tilt)) 

1083 tilt_orient = list(set(tilt_orient)) 

1084 

1085 for i in tilt_orient: 

1086 wall_rt_nzb = self.thermal_zone.find_walls( 

1087 i[0], i[1] 

1088 ) + self.thermal_zone.find_rts( 

1089 i[0], i[1] 

1090 ) + self.thermal_zone.find_izes_outer( 

1091 i[0], i[1] 

1092 ) 

1093 wins = self.thermal_zone.find_wins(i[0], i[1]) 

1094 gf = self.thermal_zone.find_gfs(i[0], i[1]) 

1095 

1096 if self.merge_windows is True: 

1097 self.facade_areas.append( 

1098 sum([element.area for element in (wall_rt_nzb + wins + gf)]) 

1099 ) 

1100 else: 

1101 self.facade_areas.append( 

1102 sum([element.area for element in (wall_rt_nzb + gf)]) 

1103 ) 

1104 

1105 self.orientation_facade.append(i[0]) 

1106 self.tilt_facade.append(i[1]) 

1107 

1108 if not wall_rt_nzb: 

1109 

1110 if not gf: 

1111 self.weightfactor_ow.append(0.0) 

1112 self.outer_wall_areas.append(0.0) 

1113 else: 

1114 self.weightfactor_ow.append(0.0) 

1115 self.outer_wall_areas.append( 

1116 (sum([element.area for element in gf])) 

1117 ) 

1118 else: 

1119 self.weightfactor_ow.append(sum([wall.wf_out 

1120 for wall in wall_rt_nzb])) 

1121 self.outer_wall_areas.append(sum([wall.area 

1122 for wall in wall_rt_nzb])) 

1123 

1124 if not wins: 

1125 self.weightfactor_win.append(0.0) 

1126 self.shading_g_total.append(1.0) 

1127 self.window_areas.append(0.0) 

1128 self.transparent_areas.append(0.0) 

1129 self.shading_max_irr.append(9999.9) 

1130 

1131 else: 

1132 self.weightfactor_win.append(sum([win.wf_out for win in wins])) 

1133 

1134 if self.merge_windows is False: 

1135 self.window_areas.append(sum([win.area for win in wins])) 

1136 self.transparent_areas.append(sum([win.area for win in wins])) 

1137 

1138 else: 

1139 self.window_areas.append(0) 

1140 self.transparent_areas.append(sum([win.area for win in wins])) 

1141 

1142 self.shading_g_total.append( 

1143 sum( 

1144 [ 

1145 win.shading_g_total * win.area / sum([w.area for w in wins]) 

1146 for win in wins 

1147 ] 

1148 ) 

1149 ) 

1150 self.shading_max_irr.append( 

1151 sum( 

1152 [ 

1153 win.shading_max_irr * win.area / sum([w.area for w in wins]) 

1154 for win in wins 

1155 ] 

1156 ) 

1157 ) 

1158 

1159 def _calc_heat_load(self): 

1160 """Static heat load calculation 

1161 

1162 This function calculates the static heat load of the thermal zone by 

1163 multiplying the UA-Value of the elements with the given Temperature 

1164 difference of t_inside and t_outside. And takes heat losses through 

1165 infiltration into account. 

1166 

1167 Attributes 

1168 ---------- 

1169 ua_value_ow_temp : float [W/(m2*K)] 

1170 UA Value without GroundFloors 

1171 ua_value_gf_temp : float [W/(m2*K)] 

1172 UA Value of all GroundFloors 

1173 """ 

1174 if self.thermal_zone.use_conditions.base_infiltration > 0.5: 

1175 warnings.warn("The base_infiltration is larger than 0.5, " 

1176 "which could lead to ideal heaters being too small.") 

1177 

1178 self.heat_load = 0.0 

1179 

1180 if self.thermal_zone.parent.parent.t_soil_mode == 2: 

1181 t_ground = self.thermal_zone.t_ground \ 

1182 - self.thermal_zone.t_ground_amplitude 

1183 else: 

1184 t_ground = self.thermal_zone.t_ground 

1185 

1186 ua_value_gf_temp = sum( 

1187 ground.ua_value for ground in self.thermal_zone.ground_floors 

1188 ) 

1189 ua_value_ow_temp = self.ua_value_ow - ua_value_gf_temp 

1190 self.heat_load_outside_factor = ( 

1191 (ua_value_ow_temp + self.ua_value_win) 

1192 + self.thermal_zone.volume 

1193 * self.thermal_zone.use_conditions.normative_infiltration 

1194 * 1 

1195 / 3600 

1196 * self.thermal_zone.heat_capac_air 

1197 * self.thermal_zone.density_air 

1198 ) 

1199 self.heat_load_ground_factor = ua_value_gf_temp 

1200 self.heat_load = \ 

1201 self.heat_load_outside_factor \ 

1202 * (self.thermal_zone.t_inside - self.thermal_zone.t_outside) \ 

1203 + self.heat_load_ground_factor \ 

1204 * (self.thermal_zone.t_inside - t_ground) 

1205 

1206 def set_calc_default(self): 

1207 """sets default calculation parameters 

1208 """ 

1209 

1210 # Attributes of inner walls 

1211 self.area_iw = 0.0 

1212 

1213 # coefficient of heat transfer facing the inside of this thermal zone 

1214 self.alpha_conv_inner_iw = 0.0 

1215 self.alpha_rad_inner_iw = 0.0 

1216 self.alpha_comb_inner_iw = 0.0 

1217 # coefficient of heat transfer facing the adjacent thermal zone 

1218 self.alpha_conv_outer_iw = 0.0 

1219 self.alpha_rad_outer_iw = 0.0 

1220 self.alpha_comb_outer_iw = 0.0 

1221 

1222 # UA-Value 

1223 self.ua_value_iw = 0.0 

1224 

1225 # resistances for heat transfer facing the inside of this thermal zone 

1226 self.r_conv_inner_iw = 0.0 

1227 self.r_rad_inner_iw = 0.0 

1228 self.r_comb_inner_iw = 0.0 

1229 self.r_conv_outer_iw = 0.0 

1230 self.r_rad_outer_iw = 0.0 

1231 self.r_comb_outer_iw = 0.0 

1232 

1233 # lumped resistance/capacity 

1234 self.r1_iw = 0.0 

1235 self.c1_iw = 0.0 

1236 

1237 # Attributes for outer walls (OuterWall, Rooftop, GroundFloor) 

1238 self.area_ow = 0.0 

1239 

1240 # coefficient of heat transfer facing the inside of this thermal zone 

1241 self.alpha_conv_inner_ow = 0.0 

1242 self.alpha_rad_inner_ow = 0.0 

1243 self.alpha_comb_inner_ow = 0.0 

1244 

1245 # coefficient of heat transfer facing the ambient 

1246 self.alpha_conv_outer_ow = 0.0 

1247 self.alpha_rad_outer_ow = 0.0 

1248 self.alpha_comb_outer_ow = 0.0 

1249 

1250 # UA-Value 

1251 self.ua_value_ow = 0.0 

1252 

1253 # resistances for heat transfer facing the inside of this thermal zone 

1254 self.r_conv_inner_ow = 0.0 

1255 self.r_rad_inner_ow = 0.0 

1256 self.r_comb_inner_ow = 0.0 

1257 

1258 # resistances for heat transfer facing the ambient 

1259 self.r_conv_outer_ow = 0.0 

1260 self.r_rad_outer_ow = 0.0 

1261 self.r_comb_outer_ow = 0.0 

1262 

1263 # lumped resistances/capacity 

1264 self.r1_ow = 0.0 

1265 self.r_rest_ow = 0.0 

1266 self.c1_ow = 0.0 

1267 self.r_total_ow = 0.0 

1268 

1269 # Optical properties 

1270 self.ir_emissivity_outer_ow = 0.0 

1271 self.ir_emissivity_inner_ow = 0.0 

1272 self.solar_absorp_ow = 0.0 

1273 

1274 # Additional attributes 

1275 self.weightfactor_ow = [] 

1276 self.weightfactor_ground = 0.0 

1277 self.outer_wall_areas = [] 

1278 

1279 # Attributes for windows 

1280 self.area_win = 0.0 

1281 

1282 # coefficient of heat transfer facing the inside of this thermal zone 

1283 self.alpha_conv_inner_win = 0.0 

1284 self.alpha_rad_inner_win = 0.0 

1285 self.alpha_comb_inner_win = 0.0 

1286 self.ratio_conv_rad_inner_win = 0.0 

1287 

1288 # coefficient of heat transfer facing the ambient 

1289 self.alpha_conv_outer_win = 0.0 

1290 self.alpha_rad_outer_win = 0.0 

1291 self.alpha_comb_outer_win = 0.0 

1292 

1293 # UA-Value 

1294 self.ua_value_win = 0.0 

1295 self.u_value_win = 0.0 

1296 

1297 # resistances for heat transfer facing the inside of this thermal zone 

1298 self.r_conv_inner_win = 0.0 

1299 self.r_rad_inner_win = 0.0 

1300 self.r_comb_inner_win = 0.0 

1301 

1302 # resistances for heat transfer facing the ambient 

1303 self.r_conv_outer_win = 0.0 

1304 self.r_rad_outer_win = 0.0 

1305 self.r_comb_outer_win = 0.0 

1306 

1307 # lumped resistances/capacity 

1308 self.r1_win = 0.0 

1309 

1310 # Optical properties 

1311 self.ir_emissivity_win = 0.0 

1312 self.solar_absorp_win = 0.0 

1313 

1314 # Additional attributes 

1315 self.weightfactor_win = [] 

1316 self.window_areas = [] 

1317 self.transparent_areas = [] 

1318 self.shading_g_total = [] 

1319 self.shading_max_irr = [] 

1320 self.weighted_g_value = 0.0 

1321 

1322 # Misc values 

1323 

1324 self.alpha_rad_inner_mean = 0.0 

1325 self.n_outer = 0 

1326 self.facade_areas = [] 

1327 self.tilt_facade = [] 

1328 self.orientation_facade = [] 

1329 self.heat_load = 0.0 

1330 self.cool_load = 0.0 

1331 

1332 @property 

1333 def nzbs_for_iw(self): 

1334 """returns borders to neighboured zones to be considered as inner walls 

1335 

1336 Returns 

1337 ------- 

1338 value : list 

1339 list of those interzonal elements that are NOT to be treated as 

1340 'outer_ordered' depending on their 'interzonal_type_export' 

1341 attribute 

1342 

1343 """ 

1344 elements = [] 

1345 for i in self.thermal_zone.interzonal_elements: 

1346 if not i.interzonal_type_export == 'outer_ordered': 

1347 elements.append(i) 

1348 else: 

1349 pass 

1350 return elements