Spaces:
Sleeping
Sleeping
Update data/ashrae_tables.py
Browse files- data/ashrae_tables.py +67 -0
data/ashrae_tables.py
CHANGED
@@ -233,6 +233,73 @@ class ASHRAETables:
|
|
233 |
return df
|
234 |
except Exception as e:
|
235 |
raise Exception(f"Error loading latitude correction table: {str(e)}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
|
237 |
def _load_occupancy_heat_gain_table(self) -> pd.DataFrame:
|
238 |
"""
|
|
|
233 |
return df
|
234 |
except Exception as e:
|
235 |
raise Exception(f"Error loading latitude correction table: {str(e)}")
|
236 |
+
|
237 |
+
def _load_thermal_properties(self) -> pd.DataFrame:
|
238 |
+
"""
|
239 |
+
Load thermal properties for wall and roof groups based on ASHRAE Handbook—Fundamentals (2017, Chapter 18).
|
240 |
+
Returns: DataFrame with columns 'group' (wall/roof group), 'type' (wall/roof), 'U_value' (Btu/h-ft²-°F).
|
241 |
+
"""
|
242 |
+
try:
|
243 |
+
# U-values (overall heat transfer coefficients) for wall and roof groups
|
244 |
+
# Values are approximate; adjust based on ASHRAE Chapter 18 or project data
|
245 |
+
data = [
|
246 |
+
{'group': 'A', 'type': 'wall', 'U_value': 0.20}, # Light construction
|
247 |
+
{'group': 'B', 'type': 'wall', 'U_value': 0.15},
|
248 |
+
{'group': 'C', 'type': 'wall', 'U_value': 0.12},
|
249 |
+
{'group': 'D', 'type': 'wall', 'U_value': 0.10},
|
250 |
+
{'group': 'E', 'type': 'wall', 'U_value': 0.08},
|
251 |
+
{'group': 'F', 'type': 'wall', 'U_value': 0.06},
|
252 |
+
{'group': 'G', 'type': 'wall', 'U_value': 0.05},
|
253 |
+
{'group': 'H', 'type': 'wall', 'U_value': 0.04}, # Heavy construction
|
254 |
+
{'group': 'A', 'type': 'roof', 'U_value': 0.25}, # Light construction
|
255 |
+
{'group': 'B', 'type': 'roof', 'U_value': 0.20},
|
256 |
+
{'group': 'C', 'type': 'roof', 'U_value': 0.15},
|
257 |
+
{'group': 'D', 'type': 'roof', 'U_value': 0.12},
|
258 |
+
{'group': 'E', 'type': 'roof', 'U_value': 0.10},
|
259 |
+
{'group': 'F', 'type': 'roof', 'U_value': 0.08},
|
260 |
+
{'group': 'G', 'type': 'roof', 'U_value': 0.06} # Heavy construction
|
261 |
+
]
|
262 |
+
return pd.DataFrame(data)
|
263 |
+
except Exception as e:
|
264 |
+
raise Exception(f"Error loading thermal properties table: {str(e)}")
|
265 |
+
|
266 |
+
def _load_roof_classifications(self) -> pd.DataFrame:
|
267 |
+
"""
|
268 |
+
Load roof classification data based on ASHRAE Handbook—Fundamentals (2017, Chapter 18).
|
269 |
+
Returns: DataFrame with columns 'group' (roof group), 'description', 'mass' (lb/ft²).
|
270 |
+
"""
|
271 |
+
try:
|
272 |
+
# Roof classifications with approximate mass per unit area
|
273 |
+
# Values are placeholders; adjust based on ASHRAE or project data
|
274 |
+
data = [
|
275 |
+
{'group': 'A', 'description': 'Light metal deck, minimal insulation', 'mass': 5.0},
|
276 |
+
{'group': 'B', 'description': 'Light metal deck, moderate insulation', 'mass': 10.0},
|
277 |
+
{'group': 'C', 'description': 'Concrete slab, light insulation', 'mass': 20.0},
|
278 |
+
{'group': 'D', 'description': 'Concrete slab, moderate insulation', 'mass': 30.0},
|
279 |
+
{'group': 'E', 'description': 'Heavy concrete, light insulation', 'mass': 40.0},
|
280 |
+
{'group': 'F', 'description': 'Heavy concrete, moderate insulation', 'mass': 50.0},
|
281 |
+
{'group': 'G', 'description': 'Heavy concrete, high insulation', 'mass': 60.0}
|
282 |
+
]
|
283 |
+
return pd.DataFrame(data)
|
284 |
+
except Exception as e:
|
285 |
+
raise Exception(f"Error loading roof classifications table: {str(e)}")
|
286 |
+
|
287 |
+
def _load_fenestration_correction(self) -> Dict[str, float]:
|
288 |
+
"""
|
289 |
+
Load fenestration correction factors based on ASHRAE Handbook—Fundamentals (2017, Chapter 18).
|
290 |
+
Returns: Dictionary mapping fenestration types to correction factors (dimensionless).
|
291 |
+
"""
|
292 |
+
try:
|
293 |
+
# Correction factors for fenestration (e.g., glazing types)
|
294 |
+
# Values are placeholders; adjust based on ASHRAE or project data
|
295 |
+
return {
|
296 |
+
'Standard': 1.0, # Baseline glazing
|
297 |
+
'Low-E': 0.85, # Low-emissivity glazing
|
298 |
+
'Tinted': 0.90, # Tinted glazing
|
299 |
+
'Reflective': 0.80 # Reflective coating
|
300 |
+
}
|
301 |
+
except Exception as e:
|
302 |
+
raise Exception(f"Error loading fenestration correction table: {str(e)}")
|
303 |
|
304 |
def _load_occupancy_heat_gain_table(self) -> pd.DataFrame:
|
305 |
"""
|