Coverage for teaser/logic/archetypebuildings/tabula/dk/terracedhouse.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 TerracedHouse(SingleFamilyHouse): 

9 """Archetype for TABULA Single Family House 

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 orientation?) 

18 - how we calculate facade and window area 

19 - calculate u-values 

20 - zones (one zone) 

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

22 and number of storeys) 

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

24 roofs? what orientation?) 

25 

26 Parameters 

27 ---------- 

28 

29 parent: Project() 

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

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

32 adds this Building instance to Project.buildings. 

33 (default: None) 

34 name : str 

35 Individual name 

36 year_of_construction : int 

37 Year of first construction 

38 height_of_floors : float [m] 

39 Average height of the buildings' floors 

40 number_of_floors : int 

41 Number of building's floors above ground 

42 net_leased_area : float [m2] 

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

44 of a building 

45 with_ahu : Boolean 

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

47 assigned to attribute central_ahu. This instance holds information for 

48 central Air Handling units. Default is False. 

49 internal_gains_mode: int [1, 2, 3] 

50 mode for the internal gains calculation done in AixLib: 

51 

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

53 calculation is based on SIA 2024 (default) 

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

55 heatflowrate is prescribed by the parameter 

56 fixed_heat_flow_rate_persons. 

57 3. Temperature and activity degree dependent calculation with 

58 consideration of moisture and co2. The moisture calculation is 

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

60 Engineering ToolBox (2004) and regards only persons. 

61 inner_wall_approximation_approach : str 

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

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

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

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

66 - length of outer or interzonal walls 

67 'typical_minus_outer_extended' like 'typical_minus_outer', but also 

68 considers that 

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

70 proportional to the square root of the area 

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

72 soil) may have a vertical share 

73 construction_data : str 

74 Construction type of used wall constructions default is "existing 

75 state" 

76 

77 - existing state: 

78 construction of walls according to existing state in TABULA 

79 - usual refurbishment: 

80 construction of walls according to usual refurbishment in 

81 TABULA 

82 - advanced refurbishment: 

83 construction of walls according to advanced refurbishment in 

84 TABULA 

85 

86 """ 

87 

88 def __init__( 

89 self, 

90 parent, 

91 name=None, 

92 year_of_construction=None, 

93 number_of_floors=None, 

94 height_of_floors=None, 

95 net_leased_area=None, 

96 with_ahu=False, 

97 internal_gains_mode=1, 

98 inner_wall_approximation_approach='teaser_default', 

99 construction_data=None): 

100 

101 super(TerracedHouse, self).__init__( 

102 parent, 

103 name, 

104 year_of_construction, 

105 number_of_floors, 

106 height_of_floors, 

107 net_leased_area, 

108 with_ahu, 

109 internal_gains_mode, 

110 inner_wall_approximation_approach, 

111 construction_data) 

112 

113 self.construction_data = construction_data 

114 self.number_of_floors = number_of_floors 

115 self.height_of_floors = height_of_floors 

116 

117 self._construction_data_1 = self.construction_data.value + '_1_TH' 

118 self._construction_data_2 = self.construction_data.value + '_2_TH' 

119 

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

121 

122 self._outer_wall_names_1 = { 

123 "ExteriorFacadeNorth_1": [90.0, 0.0], 

124 "ExteriorFacadeSouth_1": [90.0, 180.0]} 

125 

126 self._outer_wall_names_2 = { 

127 "ExteriorFacadeNorth_2": [90.0, 0.0], 

128 "ExteriorFacadeSouth_2": [90.0, 180.0]} 

129 

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

131 

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

133 

134 self.ground_floor_names_1 = { 

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

136 

137 self.ground_floor_names_2 = { 

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

139 

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

141 

142 self.window_names_1 = { 

143 "WindowFacadeNorth_1": [90.0, 0.0], 

144 "WindowFacadeSouth_1": [90.0, 180.0]} 

145 self.window_names_2 = { 

146 "WindowFacadeNorth_2": [90.0, 0.0], 

147 "WindowFacadeSouth_2": [90.0, 180.0]} 

148 

149 # [tilt, orientation] 

150 

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

152 

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

154 

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

156 

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

158 # Window1, Window2, Door 

159 # Area/ReferenceFloorArea 

160 self.facade_estimation_factors = { 

161 (2007, 2010): { 

162 'rt1': 1.1712, 

163 'rt2': 0.0, 

164 'ow1': 0.5405, 

165 'ow2': 0.0, 

166 'gf1': 1.0631, 

167 'gf2': 0.0, 

168 'win1': 0.2739, 

169 'win2': 0.0, 

170 'door': 0.009}, 

171 (1999, 2006): { 

172 'rt1': 0.5248, 

173 'rt2': 0.0, 

174 'ow1': 0.3762, 

175 'ow2': 0.0, 

176 'gf1': 0.3366, 

177 'gf2': 0.0, 

178 'win1': 0.1950, 

179 'win2': 0.0, 

180 'door': 0.009}, 

181 (1979, 1998): { 

182 'rt1': 0.6235, 

183 'rt2': 0.0, 

184 'ow1': 0.3529, 

185 'ow2': 0.0, 

186 'gf1': 0.5059, 

187 'gf2': 0.0, 

188 'win1': 0.1518, 

189 'win2': 0.0, 

190 'door': 0.009}, 

191 (1973, 1978): { 

192 'rt1': 0.8559, 

193 'rt2': 0.0, 

194 'ow1': 0.1982, 

195 'ow2': 0.0, 

196 'gf1': 0.5856, 

197 'gf2': 0.0, 

198 'win1': 0.1523, 

199 'win2': 0.0, 

200 'door': 0.009}, 

201 (1961, 1972): { 

202 'rt1': 0.8488, 

203 'rt2': 0.0, 

204 'ow1': 0.4302, 

205 'ow2': 0.0, 

206 'gf1': 0.5814, 

207 'gf2': 0.0, 

208 'win1': 0.4337, 

209 'win2': 0.0, 

210 'door': 0.009}, 

211 (1951, 1960): { 

212 'rt1': 1.0345, 

213 'rt2': 0.0, 

214 'ow1': 0.4368, 

215 'ow2': 0.0, 

216 'gf1': 0.6667, 

217 'gf2': 0.0, 

218 'win1': 0.1920, 

219 'win2': 0.0, 

220 'door': 0.009}, 

221 (1931, 1950): { 

222 'rt1': 0.7895, 

223 'rt2': 0.0, 

224 'ow1': 0.3158, 

225 'ow2': 0.0, 

226 'gf1': 0.6526, 

227 'gf2': 0.0, 

228 'win1': 0.1389, 

229 'win2': 0.0, 

230 'door': 0.009}, 

231 (1851, 1930): { 

232 'rt1': 0.5573, 

233 'rt2': 0.0, 

234 'ow1': 0.5043, 

235 'ow2': 0.0, 

236 'gf1': 0.4171, 

237 'gf2': 0.0, 

238 'win1': 0.1299, 

239 'win2': 0.0, 

240 'door': 0.009}, 

241 (0, 1850): { 

242 'rt1': 0.9462, 

243 'rt2': 0.0, 

244 'ow1': 0.1613, 

245 'ow2': 0.1935, # note that there is actually a ow2 

246 'gf1': 0.7097, 

247 'gf2': 0.0, 

248 'win1': 0.1054, 

249 'win2': 0.0, 

250 'door': 0.00}} 

251 

252 self.building_age_group = None 

253 

254 if self.with_ahu is True: 

255 self.central_ahu.profile_temperature = ( 

256 7 * [293.15] + 

257 12 * [295.15] + 

258 5 * [293.15]) 

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

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

261 self.central_ahu.profile_v_flow = ( 

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