调整关阀分析算法
This commit is contained in:
@@ -1,7 +1,12 @@
|
|||||||
from collections import defaultdict, deque
|
from collections import defaultdict, deque
|
||||||
from typing import Any
|
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"
|
VALVE_LINK_TYPE = "valve"
|
||||||
@@ -30,6 +35,21 @@ def valve_isolation_analysis(
|
|||||||
|
|
||||||
start_nodes = set()
|
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)
|
adjacency: dict[str, set[str]] = defaultdict(set)
|
||||||
valve_links: dict[str, tuple[str, str]] = {}
|
valve_links: dict[str, tuple[str, str]] = {}
|
||||||
for link_entry in get_network_link_nodes(network):
|
for link_entry in get_network_link_nodes(network):
|
||||||
|
|||||||
Reference in New Issue
Block a user