File size: 14,813 Bytes
8f3ec03
 
 
 
 
 
 
 
 
 
 
 
d5ae9f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5f7e932
 
 
 
 
 
 
d5ae9f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5f7e932
 
 
 
 
 
 
 
d5ae9f0
 
 
3c52154
d5ae9f0
 
 
30569c3
5f7e932
 
 
 
 
 
 
63bfcef
5f7e932
63bfcef
 
 
 
 
 
 
 
 
5f7e932
 
d5ae9f0
558a9f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d5ae9f0
 
 
 
 
 
 
 
 
 
 
 
 
6fe3322
 
d5ae9f0
 
 
 
 
 
 
 
 
 
 
6fe3322
 
 
d5ae9f0
 
 
 
 
 
 
 
6fe3322
 
 
 
d5ae9f0
 
 
6fe3322
 
 
 
d5ae9f0
 
 
6fe3322
4aa3854
6fe3322
 
d5ae9f0
 
 
6fe3322
 
 
 
d5ae9f0
 
 
6fe3322
 
 
 
d5ae9f0
 
 
6fe3322
 
 
 
d5ae9f0
3c52154
d5ae9f0
6fe3322
 
 
 
d5ae9f0
 
 
972e839
 
 
 
 
 
 
 
 
 
d5ae9f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
"""
BuildSustain - Internal Loads Default Data

This module handles the internal loads default data for the BuildSustain application.

Developed by: Dr Majed Abuseif, Deakin University
© 2025
"""


import streamlit as st

# People activity levels data as provided by user
PEOPLE_ACTIVITY_LEVELS = {
    name: {
        "metabolic_rate_met": data[0],
        "metabolic_rate_w": data[1],
        "sensible_min_w": data[2],
        "sensible_max_w": data[3],
        "latent_min_w": data[4],
        "latent_max_w": data[5]
    } for name, data in [
        ("Seated, at Rest (Quiet, Reading, Writing)", [1.0, 110, 20, 24, 9, 12]),
        ("Seated, Light Office Work (Typing, Filing)", [1.1, 125, 24, 27, 12, 15]),
        ("Standing, Light Work (Filing, Walking Slowly)", [1.35, 155, 30, 35, 18, 24]),
        ("Walking, Moderate Pace (2–3 mph / 3.2–4.8 km/h)", [2.0, 210, 41, 47, 30, 35]),
        ("Light Machine Work (Assembly, Small Tools)", [2.35, 250, 47, 56, 35, 44]),
        ("Moderate Work (Walking with Loads, Lifting)", [3.0, 310, 59, 68, 50, 59]),
        ("Heavy Work (Carrying Heavy Loads, Shoveling)", [4.0, 425, 73, 88, 73, 88]),
        ("Dancing (Moderate to Vigorous)", [3.5, 400, 59, 88, 59, 73]),
        ("Athletics/Exercise (Vigorous)", [6.0, 600, 88, 117, 88, 117])
    ]
}

# Default building internals data as provided by user
DEFAULT_BUILDING_INTERNALS = {
    name: {
        "lighting_density": data[0],  # W/m²
        "diversity_factor": data[1],
        "equipment_heat_gains": {
            "sensible": data[2],
            "latent": data[3],
            "convective": data[4],
            "radiant": data[5]
        },
        "ventilation_rate": data[6],  # L/s·person or L/s·m²
        "air_change_rate": data[7],   # ACH
        "schedule_type": data[8]
    } for name, data in [
        ("Residential - Single-Family Detached", [8.0, 0.7, 3.5, 1.5, 2.0, 1.5, 7.5, 0.35, "residential"]),
        ("Residential - Single-Family Attached", [8.0, 0.7, 3.5, 1.5, 2.0, 1.5, 7.5, 0.35, "residential"]),
        ("Residential - Multifamily (Low-rise and High-rise)", [8.0, 0.75, 4.0, 2.0, 2.5, 1.5, 8.0, 0.35, "residential"]),
        ("Residential - Dormitories", [10.0, 0.8, 5.0, 2.0, 3.0, 2.0, 10.0, 0.5, "residential"]),
        ("Residential - Hotels and Motels", [12.0, 0.85, 6.0, 2.5, 3.5, 2.5, 10.0, 0.5, "hotel"]),
        ("Commercial/Retail - Strip Mall", [15.0, 0.9, 12.0, 2.0, 6.0, 6.0, 10.0, 1.0, "commercial"]),
        ("Commercial/Retail - Enclosed Mall", [18.0, 0.9, 15.0, 2.0, 8.0, 7.0, 10.0, 1.2, "commercial"]),
        ("Commercial/Retail - Department Store", [16.0, 0.9, 14.0, 2.0, 7.0, 7.0, 10.0, 1.0, "commercial"]),
        ("Commercial/Retail - Supermarket", [18.0, 0.95, 18.0, 3.0, 10.0, 8.0, 12.0, 1.2, "commercial"]),
        ("Commercial/Retail - Convenience Store", [20.0, 0.95, 20.0, 4.0, 12.0, 8.0, 12.0, 1.5, "commercial"]),
        ("Commercial/Retail - Fast Food Restaurant", [14.0, 0.85, 18.0, 6.0, 10.0, 8.0, 15.0, 1.5, "commercial"]),
        ("Commercial/Retail - Full-Service Restaurant", [14.0, 0.85, 16.0, 5.0, 9.0, 7.0, 15.0, 1.5, "commercial"]),
        ("Office - Small Office (<1,000 m²)", [12.0, 0.8, 10.0, 1.0, 5.0, 5.0, 10.0, 0.9, "office"]),
        ("Office - Medium Office (≈5,000 m²)", [12.0, 0.8, 10.0, 1.0, 5.0, 5.0, 10.0, 1.0, "office"]),
        ("Office - Large Office (>10,000 m²)", [12.0, 0.8, 10.0, 1.0, 5.0, 5.0, 10.0, 1.0, "office"]),
        ("Office - Call Centre", [13.0, 0.85, 12.0, 1.5, 6.0, 6.0, 12.0, 1.2, "office"]),
        ("Educational - Primary School", [14.0, 0.85, 6.0, 2.0, 3.0, 3.0, 10.0, 1.0, "school"]),
        ("Educational - Secondary School", [14.0, 0.85, 6.5, 2.0, 3.5, 3.0, 10.0, 1.0, "school"]),
        ("Educational - University/College Classroom", [14.0, 0.85, 7.0, 2.0, 4.0, 3.0, 10.0, 1.0, "school"]),
        ("Educational - Lecture Hall", [15.0, 0.85, 8.0, 2.0, 4.0, 4.0, 10.0, 1.0, "school"]),
        ("Educational - Laboratory", [16.0, 0.9, 20.0, 4.0, 12.0, 8.0, 15.0, 2.5, "school"]),
        ("Educational - Library", [13.0, 0.8, 5.0, 1.0, 2.5, 2.5, 8.0, 0.7, "school"]),
        ("Healthcare - Hospital (Inpatient)", [15.0, 0.95, 20.0, 5.0, 10.0, 10.0, 20.0, 2.0, "hospital"]),
        ("Healthcare - Outpatient Clinic/Medical Office", [14.0, 0.9, 15.0, 3.0, 8.0, 7.0, 15.0, 1.5, "hospital"]),
        ("Healthcare - Nursing Home/Aged Care", [13.0, 0.85, 10.0, 3.0, 5.0, 5.0, 12.0, 1.0, "hospital"]),
        ("Assembly - Auditorium", [12.0, 0.9, 8.0, 2.0, 4.0, 4.0, 10.0, 1.0, "assembly"]),
        ("Assembly - Theatre/Performing Arts", [12.0, 0.9, 10.0, 2.0, 5.0, 5.0, 10.0, 1.0, "assembly"]),
        ("Assembly - Convention Centre", [14.0, 0.9, 12.0, 3.0, 6.0, 6.0, 12.0, 1.2, "assembly"]),
        ("Assembly - Gymnasium/Sports Arena", [15.0, 0.9, 14.0, 4.0, 8.0, 6.0, 12.0, 1.5, "assembly"]),
        ("Assembly - Religious Building", [12.0, 0.85, 6.0, 1.5, 3.0, 3.0, 10.0, 1.0, "assembly"]),
        ("Industrial - Light Manufacturing", [13.0, 0.9, 20.0, 2.0, 10.0, 10.0, 15.0, 1.5, "industrial"]),
        ("Industrial - Heavy Manufacturing", [13.0, 0.95, 30.0, 3.0, 15.0, 15.0, 20.0, 2.0, "industrial"]),
        ("Industrial - Warehouse (Unconditioned or Semi-conditioned)", [10.0, 0.7, 8.0, 1.0, 4.0, 4.0, 6.0, 0.5, "industrial"]),
        ("Industrial - Data Centre/Server Room", [15.0, 1.0, 80.0, 0.0, 80.0, 0.0, 20.0, 2.0, "industrial"]),
        ("Public and Institutional - Courthouse", [14.0, 0.85, 8.0, 2.0, 4.0, 4.0, 10.0, 1.0, "public_institutional"]),
        ("Public and Institutional - Police Station", [13.0, 0.85, 8.0, 2.0, 4.0, 4.0, 10.0, 1.0, "public_institutional"]),
        ("Public and Institutional - Fire Station", [13.0, 0.85, 8.0, 2.0, 4.0, 4.0, 10.0, 1.0, "public_institutional"]),
        ("Public and Institutional - Post Office", [14.0, 0.85, 10.0, 2.0, 5.0, 5.0, 10.0, 1.0, "public_institutional"]),
        ("Public and Institutional - Museum", [15.0, 0.9, 12.0, 2.0, 6.0, 6.0, 12.0, 1.2, "public_institutional"]),
        ("Lodging - Hotel (Full-Service, Midscale, or Economy)", [12.0, 0.85, 6.0, 2.0, 3.0, 3.0, 10.0, 0.8, "lodging"]),
        ("Lodging - Motel", [12.0, 0.85, 5.0, 2.0, 3.0, 2.0, 8.0, 0.8, "lodging"]),
        ("Lodging - Resort", [12.0, 0.85, 7.0, 2.5, 3.5, 3.5, 10.0, 0.8, "lodging"]),
        ("Transportation - Airport Terminal", [14.0, 0.95, 10.0, 3.0, 6.0, 4.0, 15.0, 1.5, "transport"]),
        ("Transportation - Train/Bus Station", [14.0, 0.9, 9.0, 2.0, 5.0, 4.0, 12.0, 1.2, "transport"]),
        ("Transportation - Car Park (Enclosed)", [8.0, 0.7, 2.0, 0.0, 2.0, 0.0, 5.0, 0.5, "transport"]),
        ("Other", [12.0, 0.85, 10.0, 2.0, 5.0, 5.0, 10.0, 1.0, "default"])
    ]
}

DEFAULT_EQUIPMENT_LOADS = {
    name: {
        "equipment_load_w_m2": data[0],
        "sensible_percent": data[1],
        "latent_percent": data[2],
        "convective_percent": data[3],
        "radiant_percent": data[4]
    } for name, data in [
        ("residential", [3.0, 90, 10, 65, 35]),
        ("office", [12.0, 100, 0, 75, 25]),
        ("commercial", [15.0, 95, 5, 70, 30]),
        ("educational", [10.0, 95, 5, 70, 30]),
        ("healthcare", [35.0, 80, 20, 65, 35]),
        ("assembly", [10.0, 95, 5, 65, 35]),
        ("industrial", [25.0, 85, 15, 75, 25]),
        ("public_institutional", [10.0, 90, 10, 75, 25]),
        ("lodging", [8.0, 85, 15, 65, 35]),
        ("transport", [10.0, 80, 20, 70, 30]),
        ("default", [10.0, 80, 20, 50, 50])
    ]
}

DEFAULT_OCCUPANT_DENSITY = {
    name: {
        "occupant_densities_PEOPLE_m2": data[0]
    } for name, data in [
        ("residential", [0.035]),
        ("office", [0.075]),
        ("commercial", [0.225]),
        ("educational", [0.15]),
        ("healthcare", [0.07]),
        ("assembly", [0.6]),
        ("industrial", [0.035]),
        ("public_institutional", [0.2]),
        ("lodging", [0.075]),
        ("transport", [0.3]),
        ("default", [0.05])
    ]
}
# Default schedule templates
DEFAULT_SCHEDULE_TEMPLATES = {
    "residential": {
        "description": "Typical residential usage (peaks morning and evening)",
        "weekday": [0.3, 0.3, 0.3, 0.3, 0.4, 0.5, 0.6, 0.7, 0.4, 0.3, 0.3, 0.4,
                    0.5, 0.5, 0.6, 0.8, 0.9, 1.0, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3],
        "weekend": [0.4, 0.4, 0.4, 0.4, 0.5, 0.6, 0.7, 0.9, 0.8, 0.7, 0.7, 0.6,
                    0.7, 0.8, 0.9, 1.0, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.4]
    },
    "office": {
        "description": "Standard office hours (8 AM - 6 PM)",
        "weekday": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.5, 1.0, 1.0, 1.0, 1.0,
                    0.8, 1.0, 1.0, 1.0, 1.0, 1.0, 0.5, 0.3, 0.2, 0.1, 0.1, 0.1],
        "weekend": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
                    0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
    },
    "commercial": {
        "description": "Retail hours (9 AM - 9 PM)",
        "weekday": [0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.4, 0.7, 1.0, 1.0, 1.0, 1.0,
                    1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.7, 0.5, 0.3, 0.2, 0.1, 0.1],
        "weekend": [0.1, 0.1, 0.1, 0.1, 0.2, 0.4, 0.7, 1.0, 1.0, 1.0, 1.0, 1.0,
                    1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.8, 0.6, 0.4, 0.2, 0.1, 0.1]
    },
    "educational": {
        "description": "School schedule (8 AM - 3 PM)",
        "weekday": [0.1, 0.1, 0.1, 0.1, 0.2, 0.5, 0.9, 1.0, 1.0, 1.0, 1.0, 1.0,
                    0.8, 0.7, 0.4, 0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1],
        "weekend": [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05,
                    0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05]
    },
    "healthcare": {
        "description": "24/7 full operation (hospitals)",
        "weekday": [1.0] * 24,
        "weekend": [1.0] * 24
    },
    "assembly": {
        "description": "Intermittent use with afternoon and evening peak",
        "weekday": [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.2, 0.3, 0.4, 0.5,
                    0.6, 0.8, 1.0, 1.0, 0.8, 0.5, 0.3, 0.2, 0.1, 0.1, 0.05, 0.05],
        "weekend": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.3, 0.5, 0.6, 0.7,
                    0.8, 1.0, 1.0, 1.0, 0.8, 0.5, 0.4, 0.3, 0.2, 0.1, 0.1, 0.1]
    },
    "industrial": {
        "description": "Two shifts (6 AM - 10 PM)",
        "weekday": [0.1, 0.1, 0.1, 0.1, 0.1, 0.6, 0.8, 1.0, 1.0, 1.0, 1.0, 1.0,
                    1.0, 1.0, 1.0, 0.8, 0.6, 0.4, 0.3, 0.2, 0.1, 0.1, 0.1, 0.1],
        "weekend": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4,
                    0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]
    },
    "public_institutional": {
        "description": "Standard institutional hours (8 AM - 6 PM)",
        "weekday": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.5, 0.8, 1.0, 1.0, 1.0, 1.0,
                    0.8, 0.7, 0.5, 0.3, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2],
        "weekend": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
                    0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
    },
    "lodging": {
        "description": "Lodging facilities (moderate usage all day)",
        "weekday": [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7,
                    0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9],
        "weekend": [0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8,
                    0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
    },
    "transport": {
        "description": "Transport hubs (early start, taper late night)",
        "weekday": [0.3, 0.4, 0.6, 0.8, 1.0, 1.0, 0.9, 0.9, 0.8, 0.7, 0.6, 0.6,
                    0.5, 0.5, 0.6, 0.7, 0.8, 1.0, 0.8, 0.6, 0.5, 0.4, 0.3, 0.2],
        "weekend": [0.2, 0.3, 0.4, 0.6, 0.8, 0.8, 0.7, 0.7, 0.6, 0.6, 0.5, 0.5,
                    0.6, 0.7, 0.8, 0.9, 0.9, 1.0, 0.8, 0.6, 0.4, 0.3, 0.2, 0.1]
    },
    "continuous": {
        "description": "Continuous operation 24/7 (e.g., data centre)",
        "weekday": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
                    1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
        "weekend": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
                    1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
    },
    "default": {
        "description": "Custom schedule – user-defined",
        "weekday": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.5, 1.0, 1.0, 1.0, 1.0,
                    0.8, 1.0, 1.0, 1.0, 1.0, 1.0, 0.5, 0.3, 0.2, 0.1, 0.1, 0.1],
        "weekend": [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 
                    0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
    }
}

# Lighting Fixture Types and Heat Gain Splits
LIGHTING_FIXTURE_TYPES = {
    "Incandescent": {"radiative": 80, "convective": 20},
    "Fluorescent": {"radiative": 60, "convective": 40},
    "Compact Fluorescent (CFL)": {"radiative": 60, "convective": 40},
    "LED (Light Emitting Diode)": {"radiative": 50, "convective": 50},
    "High-Intensity Discharge (HID)": {"radiative": 70, "convective": 30},
    "Halogen": {"radiative": 80, "convective": 20}
}

def display_internal_loads_help():
    """Display help information for the internal loads page."""
    st.markdown("""
    ### Internal Loads Help
    
    This page allows you to define internal heat gains from various sources within the building.
    
    #### People
    - Define occupancy groups with different activity levels
    - Activity levels determine metabolic heat generation
    - Clothing insulation affects comfort calculations
    - Schedules control when people are present
    
    #### Lighting
    - Define lighting systems with power density
    - Heat distribution between radiative and convective components
    - Schedules control lighting operation
    
    #### Equipment
    - Define equipment heat gains (computers, appliances, etc.)
    - Separate sensible and latent heat gains
    - Heat distribution between radiative and convective components
    
    #### Ventilation & Infiltration
    - **Ventilation**: Controlled outdoor air introduction
    - **Infiltration**: Uncontrolled air leakage
    - Rates based on building type and design standards
    
    #### Schedules
    - Define hourly operation profiles (0.0 = off, 1.0 = full operation)
    - Separate weekday and weekend schedules
    - Templates available for common building types
    - Custom schedules can be created for specific needs
    
    #### Usage Tips
    1. Start with building type defaults and adjust as needed
    2. Create realistic schedules based on actual building operation
    3. Consider diversity factors for large buildings
    4. Validate total loads against design expectations
    """)

#