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