Coverage for teaser/logic/buildingobjects/buildingphysics/interzonalceiling.py: 79%

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 InterzonalCeiling(InterzonalWall): 

10 """InterzonalCeiling (InterzonalWall) 

11 

12 This class represents an interzonal ceiling and is a child of 

13 InterzonalWall() 

14 

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

16 connect and are not semantically connected afterwards. For an 

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

18 zone on the other side. 

19 

20 Parameters 

21 ---------- 

22 

23 parent : ThermalZone() 

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

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

26 adds this InterzonalCeiling to ThermalZone.interzonal_ceilings. 

27 Default is None. 

28 

29 Attributes 

30 ---------- 

31 

32 internal_id : float 

33 Random id for the distinction between different elements. 

34 name : str 

35 Individual name 

36 construction_data : str 

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

38 distinction between different constructions types in the same 

39 building age period. 

40 year_of_retrofit : int 

41 Year of last retrofit 

42 year_of_construction : int 

43 Year of first construction 

44 building_age_group : list 

45 Determines the building age period that this building 

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

47 area : float [m2] 

48 Area of building element 

49 tilt : float [degree] 

50 Tilt against horizontal, default is 0.0 

51 orientation : float [degree] 

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

53 270: west), default is -1, for horizontal ceiling 

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

55 Constant heat transfer coefficient of convection inner side (facing 

56 the zone), default is 1.7 

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

58 Constant heat transfer coefficient of radiation inner side (facing 

59 the zone), default is 5.0 

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

61 Constant heat transfer coefficient of convection outer side (facing 

62 the ambient or adjacent zone), default is 1.7 

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

64 Constant heat transfer coefficient of radiation outer side (facing 

65 the ambient or adjacent zone), default is 5.0 

66 layer : list 

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

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

69 element 

70 other_side : ThermalZone() 

71 the thermal zone on the upper side of the interzonal ceiling 

72 interzonal_type_material : str 

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

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

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

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

77 None: treatment based on project.method_interzonal_export_enrichment 

78 'inner': InterzonalWall treated as InnerWall, 

79 InterzonalFloor treated as Floor, 

80 InterzonalCeiling treated as Ceiling 

81 'outer_ordered': InterzonalWall treated as Wall, 

82 InterzonalFloor treated as GroundFloor, 

83 InterzonalCeiling treated as Rooftop 

84 'outer_reversed': InterzonalWall treated as Wall, 

85 InterzonalFloor treated as Rooftop, 

86 InterzonalCeiling treated as GroundFloor, but with 

87 reversed layers, resulting in the reversed 

88 sequence of layers as for the complimentary 

89 element declared as 'outer_ordered' 

90 interzonal_type_export : str 

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

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

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

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

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

96 zone on the other side will be modelled. 

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

98 to FourElement export) or treated as border to an 

99 adjacent zone (FiveElement export). Borders to the 

100 same adjacent zone will be lumped. 

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

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

103 reversed order of resistances and capacitors as 

104 for the complimentary element declared as 

105 'outer_ordered' 

106 

107 Calculated Attributes 

108 

109 r1 : float [K/W] 

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

111 r2 : float [K/W] 

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

113 r3 : float [K/W] 

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

115 c1 : float [J/K] 

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

117 c2 : float [J/K] 

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

119 c1_korr : float [J/K] 

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

121 asymmetrical thermal load given in VDI 6007 

122 ua_value : float [W/K] 

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

124 r_inner_conv : float [K/W] 

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

126 zone) 

127 r_inner_rad : float [K/W] 

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

129 zone) 

130 r_inner_conv : float [K/W] 

131 Combined convective and radiative resistance of building element on 

132 inner side (facing the zone) 

133 r_outer_conv : float [K/W] 

134 Convective resistance of building element on outer side (facing 

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

136 GroundFloors this value is set to 0.0 

137 r_outer_rad : float [K/W] 

138 Radiative resistance of building element on outer side (facing 

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

140 GroundFloors this value is set to 0.0 

141 r_outer_conv : float [K/W] 

142 Combined convective and radiative resistance of building element on 

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

144 InnerWalls and GroundFloors this value is set to 0.0 

145 wf_out : float 

146 Weightfactor of building element ua_value/ua_value_zone 

147 """ 

148 

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

150 """Constructor InterzonalCeiling (InterzonalWall) 

151 

152 """ 

153 super(InterzonalCeiling, self).__init__(parent, other_side) 

154 

155 self._tilt = 0.0 

156 self._orientation = -1.0 

157 

158 def retrofit_wall(self, 

159 year_of_retrofit, 

160 material=None, 

161 add_at_position=None): 

162 """Retrofits wall to German refurbishment standards. 

163 

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

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

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

167 

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

169 coefficients for outer and inner heat transfer are used. 

170 

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

172 Energieeinsparverordnung (EnEv) 

173 

174 Parameters 

175 ---------- 

176 material : string 

177 Type of material, that is used for insulation 

178 year_of_retrofit : int 

179 Year of the retrofit of the wall/building 

180 add_at_position : int 

181 position at which to insert the insulation layer. 

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

183 

184 """ 

185 if self.interzonal_type_material == 'inner': 

186 return 

187 elif add_at_position is None: 

188 if self.interzonal_type_material == 'outer_reversed': 

189 add_at_position = 0 

190 elif self.interzonal_type_material == 'outer_ordered': 

191 add_at_position = -1 

192 

193 material, year_of_retrofit, ins_layer = self.initialize_retrofit( 

194 material, year_of_retrofit, add_at_position 

195 ) 

196 

197 calc_u = None 

198 

199 if 1977 <= year_of_retrofit <= 1981: 

200 calc_u = 0.45 

201 elif 1982 <= year_of_retrofit <= 1994: 

202 calc_u = 0.45 

203 elif 1995 <= year_of_retrofit <= 2001: 

204 calc_u = 0.3 

205 elif 2002 <= year_of_retrofit <= 2008: 

206 calc_u = 0.3 

207 elif 2009 <= year_of_retrofit <= 2013: 

208 calc_u = 0.2 

209 elif year_of_retrofit >= 2014: 

210 calc_u = 0.2 

211 

212 self.set_insulation(material, calc_u, year_of_retrofit, 

213 ins_layer_index=ins_layer)