优化关阀分析算法,实现网络拓扑缓存,增量图处理
This commit is contained in:
@@ -199,7 +199,7 @@ def valve_close_analysis(
|
|||||||
modify_pattern_start_time: str,
|
modify_pattern_start_time: str,
|
||||||
modify_total_duration: int = 900,
|
modify_total_duration: int = 900,
|
||||||
modify_valve_opening: dict[str, float] = None,
|
modify_valve_opening: dict[str, float] = None,
|
||||||
scheme_Name: str = None,
|
scheme_name: str = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
关阀模拟
|
关阀模拟
|
||||||
@@ -207,7 +207,7 @@ def valve_close_analysis(
|
|||||||
:param modify_pattern_start_time: 模拟开始时间,格式为'2024-11-25T09:00:00+08:00'
|
:param modify_pattern_start_time: 模拟开始时间,格式为'2024-11-25T09:00:00+08:00'
|
||||||
:param modify_total_duration: 模拟总历时,秒
|
:param modify_total_duration: 模拟总历时,秒
|
||||||
:param modify_valve_opening: dict中包含多个阀门开启度,str为阀门的id,float为修改后的阀门开启度
|
:param modify_valve_opening: dict中包含多个阀门开启度,str为阀门的id,float为修改后的阀门开启度
|
||||||
:param scheme_Name: 方案名称
|
:param scheme_name: 方案名称
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
print(
|
print(
|
||||||
@@ -262,7 +262,7 @@ def valve_close_analysis(
|
|||||||
modify_total_duration=modify_total_duration,
|
modify_total_duration=modify_total_duration,
|
||||||
modify_valve_opening=modify_valve_opening,
|
modify_valve_opening=modify_valve_opening,
|
||||||
scheme_Type="valve_close_Analysis",
|
scheme_Type="valve_close_Analysis",
|
||||||
scheme_Name=scheme_Name,
|
scheme_name=scheme_name,
|
||||||
)
|
)
|
||||||
# step 3. restore the base model
|
# step 3. restore the base model
|
||||||
# for valve in valves:
|
# for valve in valves:
|
||||||
@@ -284,7 +284,7 @@ def flushing_analysis(
|
|||||||
modify_valve_opening: dict[str, float] = None,
|
modify_valve_opening: dict[str, float] = None,
|
||||||
drainage_node_ID: str = None,
|
drainage_node_ID: str = None,
|
||||||
flushing_flow: float = 0,
|
flushing_flow: float = 0,
|
||||||
scheme_Name: str = None,
|
scheme_name: str = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
管道冲洗模拟
|
管道冲洗模拟
|
||||||
@@ -294,9 +294,15 @@ def flushing_analysis(
|
|||||||
:param modify_valve_opening: dict中包含多个阀门开启度,str为阀门的id,float为修改后的阀门开启度
|
:param modify_valve_opening: dict中包含多个阀门开启度,str为阀门的id,float为修改后的阀门开启度
|
||||||
:param drainage_node_ID: 冲洗排放口所在节点ID
|
:param drainage_node_ID: 冲洗排放口所在节点ID
|
||||||
:param flushing_flow: 冲洗水量,传入参数单位为m3/h
|
:param flushing_flow: 冲洗水量,传入参数单位为m3/h
|
||||||
:param scheme_Name: 方案名称
|
:param scheme_name: 方案名称
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
scheme_detail: dict = {
|
||||||
|
"duration": modify_total_duration,
|
||||||
|
"valve_opening": modify_valve_opening,
|
||||||
|
"drainage_node_ID": drainage_node_ID,
|
||||||
|
"flushing_flow": flushing_flow,
|
||||||
|
}
|
||||||
print(
|
print(
|
||||||
datetime.now(pytz.timezone("Asia/Shanghai")).strftime("%Y-%m-%d %H:%M:%S")
|
datetime.now(pytz.timezone("Asia/Shanghai")).strftime("%Y-%m-%d %H:%M:%S")
|
||||||
+ " -- Start Analysis."
|
+ " -- Start Analysis."
|
||||||
@@ -387,13 +393,22 @@ def flushing_analysis(
|
|||||||
modify_total_duration=modify_total_duration,
|
modify_total_duration=modify_total_duration,
|
||||||
modify_valve_opening=modify_valve_opening,
|
modify_valve_opening=modify_valve_opening,
|
||||||
scheme_Type="flushing_Analysis",
|
scheme_Type="flushing_Analysis",
|
||||||
scheme_Name=scheme_Name,
|
scheme_name=scheme_name,
|
||||||
)
|
)
|
||||||
# step 4. restore the base model
|
# step 4. restore the base model
|
||||||
if is_project_open(new_name):
|
if is_project_open(new_name):
|
||||||
close_project(new_name)
|
close_project(new_name)
|
||||||
delete_project(new_name)
|
delete_project(new_name)
|
||||||
# return result
|
# return result
|
||||||
|
# 存储方案信息到 PG 数据库
|
||||||
|
store_scheme_info(
|
||||||
|
name=name,
|
||||||
|
scheme_name=scheme_name,
|
||||||
|
scheme_type="flushing_analysis",
|
||||||
|
username="admin",
|
||||||
|
scheme_start_time=modify_pattern_start_time,
|
||||||
|
scheme_detail=scheme_detail,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
@@ -415,10 +430,10 @@ def contaminant_simulation(
|
|||||||
:param modify_pattern_start_time: 模拟开始时间,格式为'2024-11-25T09:00:00+08:00'
|
:param modify_pattern_start_time: 模拟开始时间,格式为'2024-11-25T09:00:00+08:00'
|
||||||
:param modify_total_duration: 模拟总历时,秒
|
:param modify_total_duration: 模拟总历时,秒
|
||||||
:param source: 污染源所在的节点ID
|
:param source: 污染源所在的节点ID
|
||||||
:param concentration: 污染源位置处的浓度,单位mg/L,即默认的污染模拟setting为concentration(应改为 Set point booster)
|
:param concentration: 污染源位置处的浓度,单位mg/L。默认的污染模拟setting为SOURCE_TYPE_CONCEN(改为SOURCE_TYPE_SETPOINT)
|
||||||
:param source_pattern: 污染源的时间变化模式,若不传入则默认以恒定浓度持续模拟,时间长度等于duration;
|
:param source_pattern: 污染源的时间变化模式,若不传入则默认以恒定浓度持续模拟,时间长度等于duration;
|
||||||
若传入,则格式为{1.0,0.5,1.1}等系数列表pattern_step模拟等于模型的hydraulic time step
|
若传入,则格式为{1.0,0.5,1.1}等系数列表pattern_step模拟等于模型的hydraulic time step
|
||||||
:param scheme_Name: 方案名称
|
:param scheme_name: 方案名称
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
scheme_detail: dict = {
|
scheme_detail: dict = {
|
||||||
@@ -490,7 +505,7 @@ def contaminant_simulation(
|
|||||||
cs_source = ChangeSet()
|
cs_source = ChangeSet()
|
||||||
source_schema = {
|
source_schema = {
|
||||||
"node": source,
|
"node": source,
|
||||||
"s_type": SOURCE_TYPE_CONCEN,
|
"s_type": SOURCE_TYPE_SETPOINT,
|
||||||
"strength": concentration,
|
"strength": concentration,
|
||||||
"pattern": pt["id"],
|
"pattern": pt["id"],
|
||||||
}
|
}
|
||||||
@@ -634,7 +649,7 @@ def pressure_regulation(
|
|||||||
modify_tank_initial_level: dict[str, float] = None,
|
modify_tank_initial_level: dict[str, float] = None,
|
||||||
modify_fixed_pump_pattern: dict[str, list] = None,
|
modify_fixed_pump_pattern: dict[str, list] = None,
|
||||||
modify_variable_pump_pattern: dict[str, list] = None,
|
modify_variable_pump_pattern: dict[str, list] = None,
|
||||||
scheme_Name: str = None,
|
scheme_name: str = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
区域调压模拟,用来模拟未来15分钟内,开关水泵对区域压力的影响
|
区域调压模拟,用来模拟未来15分钟内,开关水泵对区域压力的影响
|
||||||
@@ -644,7 +659,7 @@ def pressure_regulation(
|
|||||||
:param modify_tank_initial_level: dict中包含多个水塔,str为水塔的id,float为修改后的initial_level
|
:param modify_tank_initial_level: dict中包含多个水塔,str为水塔的id,float为修改后的initial_level
|
||||||
:param modify_fixed_pump_pattern: dict中包含多个水泵模式,str为工频水泵的id,list为修改后的pattern
|
:param modify_fixed_pump_pattern: dict中包含多个水泵模式,str为工频水泵的id,list为修改后的pattern
|
||||||
:param modify_variable_pump_pattern: dict中包含多个水泵模式,str为变频水泵的id,list为修改后的pattern
|
:param modify_variable_pump_pattern: dict中包含多个水泵模式,str为变频水泵的id,list为修改后的pattern
|
||||||
:param scheme_Name: 模拟方案名称
|
:param scheme_name: 模拟方案名称
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
print(
|
print(
|
||||||
@@ -697,7 +712,7 @@ def pressure_regulation(
|
|||||||
modify_fixed_pump_pattern=modify_fixed_pump_pattern,
|
modify_fixed_pump_pattern=modify_fixed_pump_pattern,
|
||||||
modify_variable_pump_pattern=modify_variable_pump_pattern,
|
modify_variable_pump_pattern=modify_variable_pump_pattern,
|
||||||
scheme_Type="pressure_regulation",
|
scheme_Type="pressure_regulation",
|
||||||
scheme_Name=scheme_Name,
|
scheme_name=scheme_name,
|
||||||
)
|
)
|
||||||
if is_project_open(new_name):
|
if is_project_open(new_name):
|
||||||
close_project(new_name)
|
close_project(new_name)
|
||||||
|
|||||||
Reference in New Issue
Block a user