Skip to content

Commit ab9746a

Browse files
committed
Refactor demand DataFrame usage in substation_matrix
Replaces repeated access to buildings_demands[name] with a local demand_df variable for clarity and efficiency in determine_building_supply_temperatures. This improves code readability and maintainability by reducing redundant dictionary lookups.
1 parent 46b7eb7 commit ab9746a

File tree

1 file changed

+27
-29
lines changed

1 file changed

+27
-29
lines changed

cea/technologies/thermal_network/substation_matrix.py

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -83,67 +83,65 @@ def determine_building_supply_temperatures(building_names, locator, substation_s
8383
buildings_demands = {}
8484
for name in building_names:
8585
name = str(name)
86-
buildings_demands[name] = pd.read_csv(locator.get_demand_results_file(name),
87-
usecols=(BUILDINGS_DEMANDS_COLUMNS))
86+
demand_df = pd.read_csv(locator.get_demand_results_file(name),
87+
usecols=(BUILDINGS_DEMANDS_COLUMNS))
8888
Q_substation_heating = 0
8989
T_supply_heating_C = np.nan
9090
for system in substation_systems['heating']:
9191
if system == 'ww':
92-
Q_substation_heating = Q_substation_heating + buildings_demands[name].Qww_sys_kWh
92+
Q_substation_heating = Q_substation_heating + demand_df.Qww_sys_kWh
9393
T_supply_heating_C = np.vectorize(calc_DH_supply)(T_supply_heating_C,
94-
np.where(buildings_demands[name].Qww_sys_kWh > 0,
95-
buildings_demands[name].Tww_sys_sup_C,
94+
np.where(demand_df.Qww_sys_kWh > 0,
95+
demand_df.Tww_sys_sup_C,
9696
np.nan))
9797
else:
98-
Q_substation_heating = Q_substation_heating + buildings_demands[name]['Qhs_sys_' + system + '_kWh']
98+
Q_substation_heating = Q_substation_heating + demand_df['Qhs_sys_' + system + '_kWh']
9999
# set the building side heating supply temperature
100100
T_supply_heating_C = np.vectorize(calc_DH_supply)(T_supply_heating_C,
101-
np.where(buildings_demands[name][
102-
'Qhs_sys_' + system + '_kWh'] > 0,
103-
buildings_demands[name][
104-
'Ths_sys_sup_' + system + '_C'],
101+
np.where(demand_df['Qhs_sys_' + system + '_kWh'] > 0,
102+
demand_df['Ths_sys_sup_' + system + '_C'],
105103
np.nan))
106104

107105
Q_substation_cooling = 0
108106
T_supply_cooling_C = np.nan
109107
for system in substation_systems['cooling']:
110108
if system == 'data':
111-
Q_substation_cooling = Q_substation_cooling + abs(buildings_demands[name].Qcdata_sys_kWh)
109+
Q_substation_cooling = Q_substation_cooling + abs(demand_df.Qcdata_sys_kWh)
112110
T_supply_cooling_C = np.vectorize(calc_DC_supply)(T_supply_cooling_C,
113111
np.where(
114-
abs(buildings_demands[name].Qcdata_sys_kWh) > 0,
115-
buildings_demands[name].Tcdata_sys_sup_C,
112+
abs(demand_df.Qcdata_sys_kWh) > 0,
113+
demand_df.Tcdata_sys_sup_C,
116114
np.nan))
117115
elif system == 're':
118-
Q_substation_cooling = Q_substation_cooling + abs(buildings_demands[name].Qcre_sys_kWh)
116+
Q_substation_cooling = Q_substation_cooling + abs(demand_df.Qcre_sys_kWh)
119117
T_supply_cooling_C = np.vectorize(calc_DC_supply)(T_supply_cooling_C,
120118
np.where(
121-
abs(buildings_demands[name].Qcre_sys_kWh) > 0,
122-
buildings_demands[name].Tcre_sys_sup_C,
119+
abs(demand_df.Qcre_sys_kWh) > 0,
120+
demand_df.Tcre_sys_sup_C,
123121
np.nan))
124122
else:
125-
Q_substation_cooling = Q_substation_cooling + abs(buildings_demands[name]['Qcs_sys_' + system + '_kWh'])
123+
Q_substation_cooling = Q_substation_cooling + abs(demand_df['Qcs_sys_' + system + '_kWh'])
126124
T_supply_cooling_C = np.vectorize(calc_DC_supply)(T_supply_cooling_C,
127-
np.where(abs(buildings_demands[name][
128-
'Qcs_sys_' + system + '_kWh']) > 0,
129-
buildings_demands[name][
130-
'Tcs_sys_sup_' + system + '_C'],
125+
np.where(abs(demand_df['Qcs_sys_' + system + '_kWh']) > 0,
126+
demand_df['Tcs_sys_sup_' + system + '_C'],
131127
np.nan))
132128

133129
# find the target substation supply temperature
134130
T_supply_DH_C = np.where(Q_substation_heating > 0, T_supply_heating_C + DT_HEAT, np.nan)
135131
T_supply_DC_C = np.where(abs(Q_substation_cooling) > 0, T_supply_cooling_C - DT_COOL, np.nan)
136132

137-
buildings_demands[name]['Q_substation_heating'] = Q_substation_heating
138-
buildings_demands[name]['Q_substation_cooling'] = abs(Q_substation_cooling)
139-
buildings_demands[name]['T_sup_target_DH'] = T_supply_DH_C
140-
buildings_demands[name]['T_sup_target_DC'] = T_supply_DC_C
133+
demand_df['Q_substation_heating'] = Q_substation_heating
134+
demand_df['Q_substation_cooling'] = abs(Q_substation_cooling)
135+
demand_df['T_sup_target_DH'] = T_supply_DH_C
136+
demand_df['T_sup_target_DC'] = T_supply_DC_C
141137

142-
buildings_demands[name]['T_re_target_DH'] = T_supply_DH_C - delta_T_supply_return
143-
buildings_demands[name]['T_re_target_DC'] = T_supply_DC_C + delta_T_supply_return
138+
demand_df['T_re_target_DH'] = T_supply_DH_C - delta_T_supply_return
139+
demand_df['T_re_target_DC'] = T_supply_DC_C + delta_T_supply_return
144140

145-
buildings_demands[name]['V_substation_heating_m3pers'] = (buildings_demands[name]['Q_substation_heating'] * 1000 / (delta_T_supply_return * HEAT_CAPACITY_OF_WATER_JPERKGK)) / P_WATER_KGPERM3
146-
buildings_demands[name]['V_substation_cooling_m3pers'] = (buildings_demands[name]['Q_substation_cooling'] * 1000 / (delta_T_supply_return * HEAT_CAPACITY_OF_WATER_JPERKGK)) / P_WATER_KGPERM3
141+
demand_df['V_substation_heating_m3pers'] = (demand_df['Q_substation_heating'] * 1000 / (delta_T_supply_return * HEAT_CAPACITY_OF_WATER_JPERKGK)) / P_WATER_KGPERM3
142+
demand_df['V_substation_cooling_m3pers'] = (demand_df['Q_substation_cooling'] * 1000 / (delta_T_supply_return * HEAT_CAPACITY_OF_WATER_JPERKGK)) / P_WATER_KGPERM3
143+
144+
buildings_demands[name] = demand_df
147145

148146
return buildings_demands
149147

0 commit comments

Comments
 (0)