feat: 重构EGM计算核心并添加实时日志推送功能
将EGM计算逻辑从webview_app.py移到main.py中的run_egm函数 添加实时日志推送和计算结果回调机制 支持后台线程计算不阻塞前端
This commit is contained in:
49
main.py
49
main.py
@@ -60,18 +60,12 @@ def read_parameter(toml_file_path):
|
||||
para.max_i = toml_optional["max_i"]
|
||||
|
||||
|
||||
def egm():
|
||||
if len(sys.argv) < 2:
|
||||
toml_file_path = r"D:/code/EGM/历史/平乾750kV.toml"
|
||||
else:
|
||||
toml_file_path = sys.argv[1]
|
||||
if not os.path.exists(toml_file_path):
|
||||
logger.info(f"无法找到数据文件{toml_file_path},程序退出。")
|
||||
sys.exit(0)
|
||||
logger.info(f"读取文件{toml_file_path}")
|
||||
read_parameter(toml_file_path)
|
||||
#########################################################
|
||||
# 以上是需要设置的参数
|
||||
def run_egm() -> dict:
|
||||
"""
|
||||
执行 EGM 计算的核心函数,可被外部调用。
|
||||
假设参数已通过 para 全局对象设置好。
|
||||
返回计算结果字典。
|
||||
"""
|
||||
parameter_display(para)
|
||||
h_whole = para.h_arm[0] # 挂点高
|
||||
string_g_len = para.string_g_len
|
||||
@@ -356,6 +350,37 @@ def egm():
|
||||
f"不同相跳闸率是{np.array2string(np.mean(n_sf_phases,axis=1),precision=16)}次/(100km·a)"
|
||||
)
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"message": "计算完成",
|
||||
"data": {
|
||||
"tripping_rate": f"{avr_n_sf:.16f} 次/(100km·a)",
|
||||
"avr_n_sf": avr_n_sf,
|
||||
"n_sf_phases": np.mean(n_sf_phases, axis=1).tolist(),
|
||||
"parameters": {
|
||||
"rated_voltage": para.rated_voltage,
|
||||
"td": para.td,
|
||||
"altitude": para.altitude,
|
||||
"ground_angels": [a / math.pi * 180 for a in para.ground_angels],
|
||||
"max_i": para.max_i
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def egm():
|
||||
"""命令行入口函数"""
|
||||
if len(sys.argv) < 2:
|
||||
toml_file_path = r"D:/code/EGM/历史/平乾750kV.toml"
|
||||
else:
|
||||
toml_file_path = sys.argv[1]
|
||||
if not os.path.exists(toml_file_path):
|
||||
logger.info(f"无法找到数据文件{toml_file_path},程序退出。")
|
||||
sys.exit(0)
|
||||
logger.info(f"读取文件{toml_file_path}")
|
||||
read_parameter(toml_file_path)
|
||||
run_egm()
|
||||
|
||||
|
||||
def speed():
|
||||
a = 0
|
||||
|
||||
Reference in New Issue
Block a user