Coverage for teaser/logic/archetypebuildings/tabula/dk/apartmentblock.py: 86%

29 statements  

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

1# created April 2017 

2# by TEASER Development Team 

3 

4from teaser.logic.archetypebuildings.tabula.de.singlefamilyhouse import \ 

5 SingleFamilyHouse 

6 

7 

8class ApartmentBlock(SingleFamilyHouse): 

9 """Archetype for TABULA Apartment Block 

10 

11 Archetype according to TABULA building typology 

12 (http://webtool.building-typology.eu/#bm). 

13 

14 Description of: 

15 

16 - estimation factors 

17 - always 4 walls, 1 roof, 1 floor, 4 windows, one door (default 

18 orientation?) 

19 - how we calculate facade and window area 

20 - calculate u-values 

21 - zones (one zone) 

22 - differences between TABULA und our approach (net floor area, height 

23 and number of storeys) 

24 - how to proceed with rooftops (keep them as flat roofs or pitched 

25 roofs? what orientation?) 

26 

27 Parameters 

28 ---------- 

29 

30 parent: Project() 

31 The parent class of this object, the Project the Building belongs to. 

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

33 adds this Building instance to Project.buildings. 

34 (default: None) 

35 name : str 

36 Individual name 

37 year_of_construction : int 

38 Year of first construction 

39 height_of_floors : float [m] 

40 Average height of the buildings' floors 

41 number_of_floors : int 

42 Number of building's floors above ground 

43 net_leased_area : float [m2] 

44 Total net leased area of building. This is area is NOT the footprint 

45 of a building 

46 with_ahu : Boolean 

47 If set to True, an empty instance of BuildingAHU is instantiated and 

48 assigned to attribute central_ahu. This instance holds information for 

49 central Air Handling units. Default is False. 

50 internal_gains_mode: int [1, 2, 3] 

51 mode for the internal gains calculation done in AixLib: 

52 

53 1. Temperature and activity degree dependent heat flux calculation for persons. The 

54 calculation is based on SIA 2024 (default) 

55 2. Temperature and activity degree independent heat flux calculation for persons, the max. 

56 heatflowrate is prescribed by the parameter 

57 fixed_heat_flow_rate_persons. 

58 3. Temperature and activity degree dependent calculation with 

59 consideration of moisture and co2. The moisture calculation is 

60 based on SIA 2024 (2015) and regards persons and non-persons, the co2 calculation is based on 

61 Engineering ToolBox (2004) and regards only persons. 

62 inner_wall_approximation_approach : str 

63 'teaser_default' (default) sets length of inner walls = typical 

64 length * height of floors + 2 * typical width * height of floors 

65 'typical_minus_outer' sets length of inner walls = 2 * typical 

66 length * height of floors + 2 * typical width * height of floors 

67 - length of outer or interzonal walls 

68 'typical_minus_outer_extended' like 'typical_minus_outer', but also 

69 considers that 

70 a) a non-complete "average room" reduces its circumference 

71 proportional to the square root of the area 

72 b) rooftops, windows and ground floors (= walls with border to 

73 soil) may have a vertical share 

74 construction_data : str 

75 Construction type of used wall constructions default is "existing 

76 state" 

77 

78 - existing state: 

79 construction of walls according to existing state in TABULA 

80 - usual refurbishment: 

81 construction of walls according to usual refurbishment in 

82 TABULA 

83 - advanced refurbishment: 

84 construction of walls according to advanced refurbishment in 

85 TABULA 

86 

87 """ 

88 

89 def __init__( 

90 self, 

91 parent, 

92 name=None, 

93 year_of_construction=None, 

94 number_of_floors=None, 

95 height_of_floors=None, 

96 net_leased_area=None, 

97 with_ahu=False, 

98 internal_gains_mode=1, 

99 inner_wall_approximation_approach='teaser_default', 

100 construction_data=None): 

101 

102 super(ApartmentBlock, self).__init__( 

103 parent, 

104 name, 

105 year_of_construction, 

106 number_of_floors, 

107 height_of_floors, 

108 net_leased_area, 

109 with_ahu, 

110 internal_gains_mode, 

111 inner_wall_approximation_approach, 

112 construction_data) 

113 

114 self.construction_data = construction_data 

115 self.number_of_floors = number_of_floors 

116 self.height_of_floors = height_of_floors 

117 

118 self._construction_data_1 = self.construction_data.value + '_1_AB' 

119 self._construction_data_2 = self.construction_data.value + '_2_AB' 

120 

121 self.zone_area_factors = {"SingleDwelling": [1, "Living"]} 

122 

123 self._outer_wall_names_1 = { 

124 "ExteriorFacadeNorth_1": [90.0, 0.0], 

125 "ExteriorFacadeEast_1": [90.0, 90.0], 

126 "ExteriorFacadeSouth_1": [90.0, 180.0], 

127 "ExteriorFacadeWest_1": [90.0, 270.0]} 

128 

129 self._outer_wall_names_2 = { 

130 "ExteriorFacadeNorth_2": [90.0, 0.0], 

131 "ExteriorFacadeEast_2": [90.0, 90.0], 

132 "ExteriorFacadeSouth_2": [90.0, 180.0], 

133 "ExteriorFacadeWest_2": [90.0, 270.0]} 

134 

135 self.roof_names_1 = {"Rooftop_1": [0, -1]} # [0, -1] 

136 

137 self.roof_names_2 = {"Rooftop_2": [0, -1]} 

138 

139 self.ground_floor_names_1 = { 

140 "GroundFloor_1": [0, -2]} # [0, -2] 

141 

142 self.ground_floor_names_2 = { 

143 "GroundFloor_2": [0, -2]} 

144 

145 self.door_names = {"Door": [90.0, 270]} 

146 

147 self.window_names_1 = { 

148 "WindowFacadeNorth_1": [90.0, 0.0], 

149 "WindowFacadeEast_1": [90.0, 90.0], 

150 "WindowFacadeSouth_1": [90.0, 180.0], 

151 "WindowFacadeWest_1": [90.0, 270.0]} 

152 self.window_names_2 = { 

153 "WindowFacadeNorth_2": [90.0, 0.0], 

154 "WindowFacadeEast_2": [90.0, 90.0], 

155 "WindowFacadeSouth_2": [90.0, 180.0], 

156 "WindowFacadeWest_2": [90.0, 270.0]} 

157 

158 # [tilt, orientation] 

159 

160 self.inner_wall_names = {"InnerWall": [90.0, 0.0]} 

161 

162 self.ceiling_names = {"Ceiling": [0.0, -1]} 

163 

164 self.floor_names = {"Floor": [0.0, -2]} 

165 

166 # Rooftop1, Rooftop2, Wall1, Wall2, GroundFloor1, GroundFloor2, 

167 # Window1, Window2, Door 

168 # Area/ReferenceFloorArea 

169 self.facade_estimation_factors = { 

170 (2007, 2010): { 

171 'rt1': 0.2378, 

172 'rt2': 0.0, 

173 'ow1': 0.5625, 

174 'ow2': 0.0, 

175 'gf1': 0.2470, 

176 'gf2': 0.0, 

177 'win1': 0.3174, 

178 'win2': 0.0, 

179 'door': 0.009}, 

180 (1999, 2006): { 

181 'rt1': 0.24497, 

182 'rt2': 0.0, 

183 'ow1': 0.3186, 

184 'ow2': 0.0, 

185 'gf1': 0.23934, 

186 'gf2': 0.0, 

187 'win1': 0.20636, 

188 'win2': 0.0, 

189 'door': 0.009}, 

190 (1979, 1998): { 

191 'rt1': 0.3133, 

192 'rt2': 0.0, 

193 'ow1': 0.4487, 

194 'ow2': 0.0, 

195 'gf1': 0.3021, 

196 'gf2': 0.0, 

197 'win1': 0.1714, 

198 'win2': 0.0, 

199 'door': 0.009}, 

200 (1973, 1978): { 

201 'rt1': 0.2404, 

202 'rt2': 0.0, 

203 'ow1': 0.0752, 

204 'ow2': 0.2235, 

205 'gf1': 0.1974, 

206 'gf2': 0.0430, 

207 'win1': 0.3859, 

208 'win2': 0.0, 

209 'door': 0.009}, 

210 (1961, 1972): { 

211 'rt1': 0.3934, 

212 'rt2': 0.0, 

213 'ow1': 0.18529, 

214 'ow2': 0.35515, 

215 'gf1': 0.3934, 

216 'gf2': 0.0, 

217 'win1': 0.2537, 

218 'win2': 0.0, 

219 'door': 0.009}, 

220 (1951, 1960): { 

221 'rt1': 0.5224, 

222 'rt2': 0.0, 

223 'ow1': 0.8846, 

224 'ow2': 0.0, 

225 'gf1': 0.4712, 

226 'gf2': 0.0, 

227 'win1': 0.1824, 

228 'win2': 0.0, 

229 'door': 0.009}, 

230 (1931, 1950): { 

231 'rt1': 0.2374, 

232 'rt2': 0.0, 

233 'ow1': 0.6473, 

234 'ow2': 0.0, 

235 'gf1': 0.2374, 

236 'gf2': 0.0, 

237 'win1': 0.1830, 

238 'win2': 0.0, 

239 'door': 0.009}, 

240 (1851, 1930): { 

241 'rt1': 0.6313, 

242 'rt2': 0.0, 

243 'ow1': 0.8313, 

244 'ow2': 0.0, 

245 'gf1': 0.4042, 

246 'gf2': 0.0, 

247 'win1': 0.1960, 

248 'win2': 0.0, 

249 'door': 0.009}, 

250 (0, 1850): { 

251 'rt1': 0.5970, 

252 'rt2': 0.0, 

253 'ow1': 0.4501, 

254 'ow2': 0.6655, 

255 'gf1': 0.4722, 

256 'gf2': 0.0698, 

257 'win1': 0.1555, 

258 'win2': 0.0, 

259 'door': 0.009}} 

260 

261 self.building_age_group = None 

262 

263 if self.with_ahu is True: 

264 self.central_ahu.profile_temperature = ( 

265 7 * [293.15] + 

266 12 * [295.15] + 

267 5 * [293.15]) 

268 self.central_ahu.profile_min_relative_humidity = (24 * [0.45]) 

269 self.central_ahu.profile_max_relative_humidity = (24 * [0.55]) 

270 self.central_ahu.profile_v_flow = ( 

271 7 * [0.0] + 12 * [1.0] + 5 * [0.0])