diff --git a/core.py b/core.py index 23726c1..6c40479 100644 --- a/core.py +++ b/core.py @@ -26,6 +26,8 @@ class Parameter: Ip_a: float # 概率密度曲线系数a Ip_b: float # 概率密度曲线系数b ac_or_dc: str # 交流或直流标识,"AC" 或 "DC",默认 "AC" + z_0: float # 雷电波阻抗,默认 300 + z_c: float # 导线波阻抗,默认 251 def rg_line_function_factory(_rg, ground_angel): # 返回一个地面捕雷线的直线方程 @@ -185,7 +187,7 @@ def solve_circle_line_intersection( return [_x, _y] -def min_i(string_len, u_ph, altitude: float = 0): +def min_i(string_len, u_ph, altitude: float = 0, z_0: float = 300, z_c: float = 251): # 海拔修正 if altitude > 1000: k_a = math.exp((altitude - 1000) / 8150) # 气隙海拔修正 @@ -196,8 +198,6 @@ def min_i(string_len, u_ph, altitude: float = 0): # u_50 = 1 / k_a * (477 * string_len + 99) # 串放电路径 2000m海拔 # u_50 = 615 * string_len # 导线对塔身放电 1000m海拔 # u_50= 263.32647401+533.90081562*string_len - z_0 = 300 # 雷电波阻抗 - z_c = 251 # 导线波阻抗 # 新版大手册公式 3-277 r = (u_50 + 2 * z_0 / (2 * z_0 + z_c) * u_ph) * (2 * z_0 + z_c) / (z_0 * z_c) # r = 2 * (u_50 - u_ph) / z_c diff --git a/main.py b/main.py index 22f5bde..6f8bf75 100644 --- a/main.py +++ b/main.py @@ -170,7 +170,7 @@ def run_egm(para: Parameter, animation=None) -> dict: insulator_c_len = para.insulator_c_len # i_min = min_i(insulator_c_len, u_ph / 1.732) # TODO 需要考虑交、直流 - i_min = min_i(insulator_c_len, u_ph, para.altitude) + i_min = min_i(insulator_c_len, u_ph, para.altitude, para.z_0, para.z_c) _min_i = i_min # 尝试的最小电流 _max_i = para.max_i # 尝试的最大电流 # cad.draw(i_min, u_ph, rs_x, rs_y, rc_x, rc_y, rg_x, rg_y, rg_type, 2) diff --git a/webui/src/components/ParameterForm.vue b/webui/src/components/ParameterForm.vue index 843853f..ff58fee 100644 --- a/webui/src/components/ParameterForm.vue +++ b/webui/src/components/ParameterForm.vue @@ -109,6 +109,24 @@ 一年中雷暴天数,用于计算地闪密度 +
+ + 雷电波阻抗,用于计算最小雷电流。 + +
+
+ + 导线波阻抗,用于计算最小雷电流。 + +
@@ -380,7 +398,9 @@ const defaultParams: AllParameters = { gc_x: [17.9, 17], ground_angels: [0], altitude: 1000, - td: 20 + td: 20, + z_0: 300, + z_c: 251 }, advance: { ng: -1, diff --git a/webui/src/types/index.ts b/webui/src/types/index.ts index 414c950..6f022ca 100644 --- a/webui/src/types/index.ts +++ b/webui/src/types/index.ts @@ -14,6 +14,8 @@ export interface Parameter { ground_angels: number[] // 地面倾角 (°) altitude: number // 海拔高度 (m) td: number // 雷暴日 (d) + z_0: number // 雷电波阻抗 (Ω),默认 300 + z_c: number // 导线波阻抗 (Ω),默认 251 } export interface AdvanceParameter { diff --git a/webview_app.py b/webview_app.py index 021c19b..19249e3 100644 --- a/webview_app.py +++ b/webview_app.py @@ -332,6 +332,8 @@ class EGMWebApp: para.voltage_n = int(optional_data.get('voltage_n', 3)) para.max_i = float(optional_data.get('max_i', 200)) + para.z_0 = float(parameter_data.get('z_0', 300)) + para.z_c = float(parameter_data.get('z_c', 251)) # 设置 ac_or_dc 参数 ac_or_dc_value = str(parameter_data.get('ac_or_dc', 'AC'))