feature: add district heating network sizing workflow #18

Merged
a_rezaei merged 12 commits from majid-playing-with-ep-workflow into main 2024-08-15 15:50:17 -04:00
Showing only changes of commit 62c70b9c9f - Show all commits

View File

@ -0,0 +1,32 @@
import networkx as nx
import logging
class DistrictHeatingFactory:
"""
DistrictHeatingFactory class
"""
def __init__(self, city, graph):
self._city = city
self._network_graph = graph
def enrich(self):
"""
Enrich the network graph nodes with attributes from the city buildings.
"""
for node in self._network_graph.nodes(data=True):
node_id, node_attrs = node
if node_attrs.get('type') == 'building':
building_name = node_attrs.get('name')
building_found = False
for building in self._city.buildings:
if building.name == building_name:
building_attrs = vars(building)
for attr, value in building_attrs.items():
if attr not in self._network_graph.nodes[node_id]:
self._network_graph.nodes[node_id][attr] = value
building_found = True
break
if not building_found:
logging.error(msg=f"Building with name '{building_name}' not found in city.")