调整关阀分析算法

This commit is contained in:
2026-02-03 11:53:16 +08:00
parent 6fe01aa248
commit 870c9433d6

View File

@@ -1,7 +1,12 @@
from collections import defaultdict, deque
from typing import Any
from app.services.tjnetwork import get_network_link_nodes
from app.services.tjnetwork import (
get_network_link_nodes,
is_node,
is_link,
get_link_properties,
)
VALVE_LINK_TYPE = "valve"
@@ -30,6 +35,21 @@ def valve_isolation_analysis(
start_nodes = set()
for element in target_elements:
if is_node(network, element):
start_nodes.add(element)
elif is_link(network, element):
link_props = get_link_properties(network, element)
node1 = link_props.get("node1")
node2 = link_props.get("node2")
if not node1 or not node2:
# 如果是批量处理,可以选择跳过错误或记录错误,这里暂时保持严谨抛出异常
raise ValueError(f"Accident link {element} missing node endpoints")
start_nodes.add(node1)
start_nodes.add(node2)
else:
raise ValueError(f"Accident element {element} not found")
adjacency: dict[str, set[str]] = defaultdict(set)
valve_links: dict[str, tuple[str, str]] = {}
for link_entry in get_network_link_nodes(network):