Coverage for teaser/logic/buildingobjects/buildingphysics/interzonalfloor.py: 72%

29 statements  

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

1# created April 2023 

2# by TEASER4 Development Team 

3 

4 

5from teaser.logic.buildingobjects.buildingphysics.interzonalwall \ 

6 import InterzonalWall 

7 

8 

9class InterzonalFloor(InterzonalWall): 

10 """InterzonalFloor (InterzonalWall) 

11 

12 This class represents an interzonal floor and is a child of InterzonalWall() 

13 

14 Note that interzonal elements have to be created twice for each zone they 

15 connect and are not semantically connected afterwards. For an 

16 InterzonalFloor of one zone, an InterzonalCeiling has to be created for the 

17 zone on the other side. 

18 

19 Parameters 

20 ---------- 

21 

22 parent : ThermalZone() 

23 The parent class of this object, the ThermalZone the BE belongs to. 

24 Allows for better control of hierarchical structures. If not None it 

25 adds this InterzonalFloor to ThermalZone.interzonal_floors. 

26 Default is None. 

27 

28 Attributes 

29 ---------- 

30 

31 internal_id : float 

32 Random id for the distinction between different elements. 

33 name : str 

34 Individual name 

35 construction_data : str 

36 Type of construction (e.g. "heavy" or "light"). Needed for 

37 distinction between different constructions types in the same 

38 building age period. 

39 year_of_retrofit : int 

40 Year of last retrofit 

41 year_of_construction : int 

42 Year of first construction 

43 building_age_group : list 

44 Determines the building age period that this building 

45 element belongs to [begin, end], e.g. [1984, 1994] 

46 area : float [m2] 

47 Area of building element 

48 tilt : float [degree] 

49 Tilt against horizontal, default is 0.0 

50 orientation : float [degree] 

51 Azimuth direction of building element (0 : north, 90: east, 180: south, 

52 270: west), default is -2, for horizontal floor 

53 inner_convection : float [W/(m2*K)] 

54 Constant heat transfer coefficient of convection inner side (facing 

55 the zone), default is 1.7 

56 inner_radiation : float [W/(m2*K)] 

57 Constant heat transfer coefficient of radiation inner side (facing 

58 the zone), default is 5.0 

59 outer_convection : float [W/(m2*K)] 

60 Constant heat transfer coefficient of convection outer side (facing 

61 the ambient or adjacent zone). Default 0.0 - if unchanged, 1.7 when 

62 adding an outside 

63 outer_radiation : float [W/(m2*K)] 

64 Constant heat transfer coefficient of radiation outer side (facing 

65 the ambient or adjacent zone). Default 0.0 - if unchanged, 5.0 when 

66 adding an outside 

67 layer : list 

68 List of all layers of a building element (to be filled with Layer 

69 objects). Use element.layer = None to delete all layers of the building 

70 element 

71 other_side : ThermalZone() 

72 the thermal zone on the upper side of the interzonal floor 

73 interzonal_type_material : str 

74 one of (None (default), 'inner', 'outer_ordered', 'outer_reversed') 

75 describes as which kind of element the element is treated when loading 

76 type elements. Caution: Make sure that the complimentary element of 

77 the other zone is also changed accordingly if this is adapted manually 

78 None: treatment based on project.method_interzonal_export_enrichment 

79 'inner': InterzonalWall treated as InnerWall, 

80 InterzonalFloor treated as Floor, 

81 InterzonalCeiling treated as Ceiling 

82 'outer_ordered': InterzonalWall treated as Wall, 

83 InterzonalFloor treated as GroundFloor, 

84 InterzonalCeiling treated as Rooftop 

85 'outer_reversed': like 'outer_ordered', but with reversed layers, 

86 resulting in the reversed sequence of layers as 

87 for the complimentary element declared as 

88 'outer_ordered' 

89 interzonal_type_export : str 

90 one of (None (default), 'inner', 'outer_ordered', 'outer_reversed') 

91 describes as which kind of element the element is treated when exporting 

92 to Modelica. Caution: Make sure that the complimentary element of 

93 the other zone is also changed accordingly if this is adapted manually 

94 'inner': element will be lumped with InnerWall. No heat flow to the 

95 zone on the other side will be modelled. 

96 'outer_ordered': element will be lumped with OuterWall (OneElement 

97 to FourElement export) or treated as border to an 

98 adjacent zone (FiveElement export). Borders to the 

99 same adjacent zone will be lumped. 

100 'outer_reversed': like 'outer_ordered', but the lumping follows 

101 VDI 6007-1 in reversed order, resulting in the 

102 reversed order of resistances and capacitors as 

103 for the complimentary element declared as 

104 'outer_ordered' 

105 

106 Calculated Attributes 

107 

108 r1 : float [K/W] 

109 equivalent resistance R1 of the analogous model given in VDI 6007 

110 r2 : float [K/W] 

111 equivalent resistance R2 of the analogous model given in VDI 6007 

112 r3 : float [K/W] 

113 equivalent resistance R3 of the analogous model given in VDI 6007 

114 c1 : float [J/K] 

115 equivalent capacity C1 of the analogous model given in VDI 6007 

116 c2 : float [J/K] 

117 equivalent capacity C2 of the analogous model given in VDI 6007 

118 c1_korr : float [J/K] 

119 corrected capacity C1,korr for building elements in the case of 

120 asymmetrical thermal load given in VDI 6007 

121 ua_value : float [W/K] 

122 UA-Value of building element (Area times U-Value) 

123 r_inner_conv : float [K/W] 

124 Convective resistance of building element on inner side (facing the 

125 zone) 

126 r_inner_rad : float [K/W] 

127 Radiative resistance of building element on inner side (facing the 

128 zone) 

129 r_inner_conv : float [K/W] 

130 Combined convective and radiative resistance of building element on 

131 inner side (facing the zone) 

132 r_outer_conv : float [K/W] 

133 Convective resistance of building element on outer side (facing 

134 the ambient or adjacent zone). Currently for all InnerWalls and 

135 GroundFloors this value is set to 0.0 

136 r_outer_rad : float [K/W] 

137 Radiative resistance of building element on outer side (facing 

138 the ambient or adjacent zone). Currently for all InnerWalls and 

139 GroundFloors this value is set to 0.0 

140 r_outer_comb : float [K/W] 

141 Combined convective and radiative resistance of building element on 

142 outer side (facing the ambient or adjacent zone). Currently for all 

143 InnerWalls and GroundFloors this value is set to 0.0 

144 wf_out : float 

145 Weightfactor of building element ua_value/ua_value_zone 

146 

147 """ 

148 

149 def __init__(self, parent=None, other_side=None): 

150 """ 

151 """ 

152 super(InterzonalFloor, self).__init__(parent, other_side) 

153 

154 self._tilt = 0.0 

155 self._orientation = -2.0 

156 

157 def retrofit_wall(self, 

158 year_of_retrofit, 

159 material=None, 

160 add_at_position=None): 

161 """Retrofits wall to German refurbishment standards. 

162 

163 This function adds an additional layer of insulation and sets the 

164 thickness of the layer according to the retrofit standard in the 

165 year of refurbishment. Refurbishment year must be newer then 1977 

166 

167 Note: To Calculate thickness and U-Value, the standard TEASER 

168 coefficients for outer and inner heat transfer are used. 

169 

170 The used Standards are namely the Waermeschutzverordnung (WSVO) and 

171 Energieeinsparverordnung (EnEv) 

172 

173 Parameters 

174 ---------- 

175 material : string 

176 Type of material, that is used for insulation 

177 year_of_retrofit : int 

178 Year of the retrofit of the wall/building 

179 add_at_position : int 

180 position at which to insert the insulation layer. 

181 0 inside, None (default) or -1 outside/other side 

182 

183 """ 

184 if self.interzonal_type_material == 'inner': 

185 return 

186 elif add_at_position is None: 

187 if self.interzonal_type_material == 'outer_reversed': 

188 add_at_position = 0 

189 elif self.interzonal_type_material == 'outer_ordered': 

190 add_at_position = -1 

191 

192 material, year_of_retrofit, ins_layer = self.initialize_retrofit( 

193 material, year_of_retrofit, add_at_position 

194 ) 

195 

196 calc_u = None 

197 

198 if 1977 <= year_of_retrofit <= 1981: 

199 calc_u = 0.8 

200 elif 1982 <= year_of_retrofit <= 1994: 

201 calc_u = 0.7 

202 elif 1995 <= year_of_retrofit <= 2001: 

203 calc_u = 0.5 

204 elif 2002 <= year_of_retrofit <= 2008: 

205 calc_u = 0.4 

206 elif 2009 <= year_of_retrofit <= 2013: 

207 calc_u = 0.3 

208 elif year_of_retrofit >= 2014: 

209 calc_u = 0.3 

210 

211 self.set_insulation(material, calc_u, year_of_retrofit, 

212 ins_layer_index=ins_layer)