Spaces:
Sleeping
Sleeping
File size: 12,739 Bytes
297bc15 e9e5696 297bc15 e9e5696 297bc15 599543d 297bc15 599543d 297bc15 599543d 297bc15 599543d 297bc15 599543d 297bc15 599543d 297bc15 599543d 7dc25d4 599543d 297bc15 4ee9859 297bc15 599543d 297bc15 599543d 297bc15 599543d 297bc15 599543d 297bc15 599543d 297bc15 599543d 297bc15 599543d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
"""
BuildSustain - Materials, Fenestrations, and Constructions Data Module
This module provides default materials, fenestrations, and constructions data for the BuildSustain application.
Developed by: Dr Majed Abuseif, Deakin University
© 2025
"""
import logging
from typing import Dict, List, Any
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
# Default values
DEFAULT_MATERIAL_PROPERTIES = {
"absorptivity": 0.5,
"emissivity": 0.925,
"thickness_range": {"min": 0.01, "max": 0.5}
}
DEFAULT_WINDOW_PROPERTIES = {"h_o": 17.8}
DEFAULT_DOOR_PROPERTIES = {"emissivity": 0.925}
# Sample Materials Data
SAMPLE_MATERIALS = {
name: {
"type": "opaque",
"category": category,
"thermal_properties": {
"conductivity": data[0],
"density": data[1],
"specific_heat": data[2]
},
"thickness_range": {**DEFAULT_MATERIAL_PROPERTIES["thickness_range"], "default": data[3]},
"embodied_carbon": data[4],
"absorptivity": data[5] if len(data) > 5 else DEFAULT_MATERIAL_PROPERTIES["absorptivity"],
"emissivity": data[6] if len(data) > 6 else DEFAULT_MATERIAL_PROPERTIES["emissivity"],
"cost": {
"material": data[7] if len(data) > 7 else 10.0,
"labor": (data[7] * 0.5) if len(data) > 7 else 5.0,
"replacement_years": 50 if category in ["Structural", "Sub-Structural"] else 40 if category == "Finishing" else 30
},
"description": f"{name} for {category.lower()} applications"
} for name, category, data in [
("F04 Wall air space resistance", "Insulation", [0.01, 1.0, 1000.0, 0.01, 0.01, 0.5, 0.925, 0.5]),
("F05 Ceiling air space resistance", "Insulation", [0.01, 1.0, 1000.0, 0.01, 0.01, 0.5, 0.925, 0.5]),
("F06 EIFS finish", "Finishing", [0.72, 1856.0, 840.0, 0.0095, 0.3, 0.5, 0.925, 17.6]),
("F07 25mm stucco", "Finishing", [0.72, 1856.0, 840.0, 0.0254, 0.2, 0.6, 0.91, 14.1]),
("F08 Metal surface", "Sub-Structural", [45.28, 7824.0, 500.0, 0.001, 2.2, 0.7, 0.075, 25.0]),
("F09 25mm cement plaster", "Finishing", [0.72, 1856.0, 840.0, 0.0254, 0.2, 0.6, 0.91, 14.1]),
("F10 13mm gypsum board", "Finishing", [0.16, 800.0, 1090.0, 0.0127, 0.25, 0.4, 0.925, 5.1]),
("F11 16mm gypsum board", "Finishing", [0.16, 800.0, 1090.0, 0.0159, 0.25, 0.4, 0.925, 6.4]),
("F12 19mm gypsum board", "Finishing", [0.16, 800.0, 1090.0, 0.0191, 0.25, 0.4, 0.925, 7.6]),
("F13 13mm cement plaster", "Finishing", [0.72, 1856.0, 840.0, 0.0127, 0.2, 0.6, 0.91, 7.1]),
("F14 13mm lime plaster", "Finishing", [0.72, 1600.0, 840.0, 0.0127, 0.2, 0.5, 0.90, 6.1]),
("F15 22mm cement plaster", "Finishing", [0.72, 1856.0, 840.0, 0.0222, 0.2, 0.6, 0.91, 12.4]),
("F16 Acoustic tile", "Finishing", [0.06, 368.0, 590.0, 0.0191, 1.0, 0.4, 0.925, 14.0]),
("F17 13mm slag", "Finishing", [0.16, 960.0, 1090.0, 0.0127, 0.2, 0.5, 0.925, 1.0]),
("F18 25mm slag", "Finishing", [0.16, 960.0, 1090.0, 0.0254, 0.2, 0.5, 0.925, 1.9]),
("G01 13mm gypsum board", "Finishing", [0.16, 800.0, 1090.0, 0.0127, 0.25, 0.4, 0.925, 5.1]),
("G01a 19mm gypsum board", "Finishing", [0.16, 800.0, 1090.0, 0.0191, 0.25, 0.4, 0.925, 7.6]),
("G02 25mm cement plaster", "Finishing", [0.72, 1856.0, 840.0, 0.0254, 0.2, 0.6, 0.91, 14.1]),
("G03 13mm lime plaster", "Finishing", [0.72, 1600.0, 840.0, 0.0127, 0.25, 0.5, 0.90, 6.1]),
("G04 13mm cement plaster", "Finishing", [0.72, 1856.0, 840.0, 0.0127, 0.2, 0.6, 0.91, 7.1]),
("G05 25mm wood", "Sub-Structural", [0.15, 608.0, 1630.0, 0.0254, 0.3, 0.5, 0.925, 15.4]),
("G06 19mm wood", "Sub-Structural", [0.15, 608.0, 1630.0, 0.0191, 0.3, 0.5, 0.925, 11.6]),
("I01 25mm insulation board", "Insulation", [0.03, 43.0, 1210.0, 0.0254, 2.5, 0.5, 0.925, 1.1]),
("I02 50mm insulation board", "Insulation", [0.03, 43.0, 1210.0, 0.0508, 2.5, 0.5, 0.925, 2.2]),
("I03 75mm insulation board", "Insulation", [0.03, 43.0, 1210.0, 0.0762, 2.5, 0.5, 0.925, 3.3]),
("M01 100mm brick", "Structural", [0.89, 1920.0, 790.0, 0.1016, 0.3, 0.7, 0.93, 19.5]),
("M02 100mm face brick", "Structural", [1.33, 2000.0, 790.0, 0.1016, 0.3, 0.7, 0.93, 20.3]),
("M03 150mm brick", "Structural", [0.89, 1920.0, 790.0, 0.1524, 0.3, 0.7, 0.93, 29.3]),
("M04 200mm concrete block", "Structural", [0.51, 800.0, 920.0, 0.2032, 0.2, 0.65, 0.925, 13.0]),
("M05 200mm concrete block", "Structural", [1.11, 1280.0, 920.0, 0.2032, 0.2, 0.65, 0.925, 20.8]),
("M06 150mm concrete block", "Structural", [0.51, 800.0, 920.0, 0.1524, 0.2, 0.65, 0.925, 9.8]),
("M07 100mm concrete block", "Structural", [0.51, 800.0, 920.0, 0.1016, 0.2, 0.65, 0.925, 6.5]),
("M08 150mm concrete block", "Structural", [1.11, 1280.0, 920.0, 0.1524, 0.2, 0.65, 0.925, 15.6]),
("M09 100mm concrete block", "Structural", [1.11, 1280.0, 920.0, 0.1016, 0.2, 0.65, 0.925, 10.4]),
("M10 100mm lightweight concrete", "Structural", [0.53, 1280.0, 840.0, 0.1016, 0.15, 0.65, 0.925, 7.8]),
("M11 100mm lightweight concrete", "Structural", [0.53, 1280.0, 840.0, 0.1016, 0.15, 0.65, 0.925, 7.8]),
("M12 150mm lightweight concrete", "Structural", [0.53, 1280.0, 840.0, 0.1524, 0.15, 0.65, 0.925, 11.7]),
("M13 200mm lightweight concrete", "Structural", [0.53, 1280.0, 840.0, 0.2032, 0.15, 0.65, 0.925, 15.6]),
("M14 100mm heavyweight concrete", "Structural", [1.95, 2240.0, 900.0, 0.1016, 0.2, 0.65, 0.925, 18.2]),
("M14a 100mm heavyweight concrete", "Structural", [1.95, 2240.0, 900.0, 0.1016, 0.2, 0.65, 0.925, 18.2]),
("M15 200mm heavyweight concrete", "Structural", [1.95, 2240.0, 900.0, 0.2032, 0.2, 0.65, 0.925, 36.4]),
("M16 300mm heavyweight concrete", "Structural", [1.95, 2240.0, 900.0, 0.3048, 0.2, 0.65, 0.925, 54.6]),
("M17 100mm stone", "Structural", [2.10, 2240.0, 880.0, 0.1016, 0.2, 0.7, 0.925, 22.8]),
("M18 150mm stone", "Structural", [2.10, 2240.0, 880.0, 0.1524, 0.2, 0.7, 0.925, 34.1]),
("M19 100mm limestone", "Structural", [1.80, 2320.0, 880.0, 0.1016, 0.2, 0.6, 0.925, 23.6]),
("M20 150mm limestone", "Structural", [1.80, 2320.0, 880.0, 0.1524, 0.2, 0.6, 0.925, 35.4]),
("M21 200mm limestone", "Structural", [1.80, 2320.0, 880.0, 0.2032, 0.2, 0.6, 0.925, 47.1]),
("M22 100mm granite", "Structural", [2.80, 2640.0, 880.0, 0.1016, 0.2, 0.7, 0.925, 26.8]),
("M23 150mm granite", "Structural", [2.80, 2640.0, 880.0, 0.1524, 0.2, 0.7, 0.925, 40.2]),
("M24 200mm granite", "Structural", [2.80, 2640.0, 880.0, 0.2032, 0.2, 0.7, 0.925, 53.6]),
("M25 100mm marble", "Structural", [2.50, 2720.0, 880.0, 0.1016, 0.2, 0.6, 0.925, 27.6]),
("M26 150mm marble", "Structural", [2.50, 2720.0, 880.0, 0.1524, 0.2, 0.6, 0.925, 41.4]),
("M27 200mm marble", "Structural", [2.50, 2720.0, 880.0, 0.2032, 0.2, 0.6, 0.925, 55.3])
]
}
# Sample Fenestrations Data
SAMPLE_FENESTRATIONS = {
**{
name: {
"type": "window",
"performance": {
"u_value": data[0],
"shgc": data[1],
"visible_transmittance": data[1] * 0.7
},
"embodied_carbon": data[2],
"h_o": data[3] if len(data) > 3 else DEFAULT_WINDOW_PROPERTIES["h_o"],
"cost": {
"material": data[4] if len(data) > 4 else 100.0,
"labor": (data[4] * 0.3) if len(data) > 4 else 30.0,
"replacement_years": 30
},
"description": f"{name} glazing for window applications"
} for name, data in [
("Single Clear 3mm", [5.8, 0.81, 25.0, 17.8, 50.0]),
("Single Clear 6mm", [5.7, 0.78, 28.0, 17.8, 60.0]),
("Single Tinted 6mm", [5.7, 0.55, 30.0, 17.8, 70.0]),
("Double Clear 6mm/13mm Air", [2.7, 0.70, 40.0, 17.8, 100.0]),
("Double Low-E 6mm/13mm Air", [1.5, 0.60, 45.0, 17.8, 120.0]),
("Double Tinted 6mm/13mm Air", [2.7, 0.45, 42.0, 17.8, 110.0]),
("Double Low-E 6mm/13mm Argon", [1.5, 0.55, 48.0, 17.8, 130.0]),
("Triple Clear 4mm/12mm Air", [1.8, 0.62, 55.0, 17.8, 150.0]),
("Triple Low-E 4mm/12mm Argon", [0.9, 0.50, 60.0, 17.8, 180.0]),
("Single Low-E Reflective 6mm", [5.6, 0.35, 35.0, 13.0, 90.0]),
("Double Reflective 6mm/13mm Air", [2.5, 0.30, 50.0, 13.0, 140.0]),
("Electrochromic 6mm/13mm Air", [2.0, 0.40, 70.0, 17.8, 200.0])
]
},
}
# Sample Constructions Data
SAMPLE_CONSTRUCTIONS = {
name: {
"type": c_type,
"layers": layers,
"u_value": data[0],
"embodied_carbon": data[1],
"absorptivity": data[2],
"cost": {
"material": data[3],
"labor": data[3] * 0.5,
"replacement_years": 75 if c_type in ["roof", "floor"] else 50
},
"description": f"{name} for {c_type.lower()} applications"
} for name, c_type, layers, data in [
("Light Exterior Wall", "wall", [
{"material": "F08 Metal surface", "thickness": 0.001},
{"material": "I02 50mm insulation board", "thickness": 0.0508},
{"material": "F04 Wall air space resistance", "thickness": 0.01},
{"material": "G01a 19mm gypsum board", "thickness": 0.0191}
], [0.39, 7.85, 0.7, 25.1]),
("Light Roof/Ceiling", "roof", [
{"material": "M11 100mm lightweight concrete", "thickness": 0.1016},
{"material": "F05 Ceiling air space resistance", "thickness": 0.01},
{"material": "F16 Acoustic tile", "thickness": 0.0191}
], [0.48, 9.45, 0.65, 22.9]),
("Light Floor", "floor", [
{"material": "F16 Acoustic tile", "thickness": 0.0191},
{"material": "F05 Ceiling air space resistance", "thickness": 0.01},
{"material": "M11 100mm lightweight concrete", "thickness": 0.1016}
], [0.48, 9.45, 0.65, 22.9]),
("Heavy Exterior Wall", "wall", [
{"material": "M01 100mm brick", "thickness": 0.1016},
{"material": "I02 50mm insulation board", "thickness": 0.0508},
{"material": "F04 Wall air space resistance", "thickness": 0.01},
{"material": "G01 13mm gypsum board", "thickness": 0.0127}
], [0.45, 8.5, 0.7, 26.8]),
("Heavy Roof/Ceiling", "roof", [
{"material": "M15 200mm heavyweight concrete", "thickness": 0.2032},
{"material": "F05 Ceiling air space resistance", "thickness": 0.01},
{"material": "F10 13mm gypsum board", "thickness": 0.0127}
], [0.35, 10.2, 0.65, 35.6]),
("Heavy Floor", "floor", [
{"material": "M15 200mm heavyweight concrete", "thickness": 0.2032},
{"material": "F05 Ceiling air space resistance", "thickness": 0.01},
{"material": "F16 Acoustic tile", "thickness": 0.0191}
], [0.35, 10.2, 0.65, 35.6]),
("Insulated Wall", "wall", [
{"material": "F07 25mm stucco", "thickness": 0.0254},
{"material": "I03 75mm insulation board", "thickness": 0.0762},
{"material": "F04 Wall air space resistance", "thickness": 0.01},
{"material": "G01a 19mm gypsum board", "thickness": 0.0191}
], [0.30, 9.0, 0.6, 22.5]),
("Metal Clad Wall", "wall", [
{"material": "F08 Metal surface", "thickness": 0.001},
{"material": "I02 50mm insulation board", "thickness": 0.0508},
{"material": "G05 25mm wood", "thickness": 0.0254}
], [0.38, 8.0, 0.7, 24.5]),
("Concrete Wall", "wall", [
{"material": "M14 100mm heavyweight concrete", "thickness": 0.1016},
{"material": "I01 25mm insulation board", "thickness": 0.0254},
{"material": "F10 13mm gypsum board", "thickness": 0.0127}
], [0.50, 7.5, 0.65, 20.0])
]
}
# Getter Functions
def get_default_materials() -> Dict[str, Any]:
"""Returns the default materials dictionary."""
logger.debug("Retrieving default materials")
return SAMPLE_MATERIALS
def get_default_fenestrations() -> Dict[str, Any]:
"""Returns the default fenestrations dictionary."""
logger.debug("Retrieving default fenestrations")
return SAMPLE_FENESTRATIONS
def get_default_constructions() -> Dict[str, Any]:
"""Returns the default constructions dictionary."""
logger.debug("Retrieving default constructions")
return SAMPLE_CONSTRUCTIONS |