feat: 添加雷电波阻抗和导线波阻抗参数支持
在参数类中添加z_0和z_c字段,并在计算最小雷电流时使用这些参数 更新前端表单和类型定义以支持新参数 修改webview应用以接收并处理新参数
This commit is contained in:
6
core.py
6
core.py
@@ -26,6 +26,8 @@ class Parameter:
|
|||||||
Ip_a: float # 概率密度曲线系数a
|
Ip_a: float # 概率密度曲线系数a
|
||||||
Ip_b: float # 概率密度曲线系数b
|
Ip_b: float # 概率密度曲线系数b
|
||||||
ac_or_dc: str # 交流或直流标识,"AC" 或 "DC",默认 "AC"
|
ac_or_dc: str # 交流或直流标识,"AC" 或 "DC",默认 "AC"
|
||||||
|
z_0: float # 雷电波阻抗,默认 300
|
||||||
|
z_c: float # 导线波阻抗,默认 251
|
||||||
|
|
||||||
|
|
||||||
def rg_line_function_factory(_rg, ground_angel): # 返回一个地面捕雷线的直线方程
|
def rg_line_function_factory(_rg, ground_angel): # 返回一个地面捕雷线的直线方程
|
||||||
@@ -185,7 +187,7 @@ def solve_circle_line_intersection(
|
|||||||
return [_x, _y]
|
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:
|
if altitude > 1000:
|
||||||
k_a = math.exp((altitude - 1000) / 8150) # 气隙海拔修正
|
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 = 1 / k_a * (477 * string_len + 99) # 串放电路径 2000m海拔
|
||||||
# u_50 = 615 * string_len # 导线对塔身放电 1000m海拔
|
# u_50 = 615 * string_len # 导线对塔身放电 1000m海拔
|
||||||
# u_50= 263.32647401+533.90081562*string_len
|
# u_50= 263.32647401+533.90081562*string_len
|
||||||
z_0 = 300 # 雷电波阻抗
|
|
||||||
z_c = 251 # 导线波阻抗
|
|
||||||
# 新版大手册公式 3-277
|
# 新版大手册公式 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 = (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
|
# r = 2 * (u_50 - u_ph) / z_c
|
||||||
|
|||||||
2
main.py
2
main.py
@@ -170,7 +170,7 @@ def run_egm(para: Parameter, animation=None) -> dict:
|
|||||||
insulator_c_len = para.insulator_c_len
|
insulator_c_len = para.insulator_c_len
|
||||||
# i_min = min_i(insulator_c_len, u_ph / 1.732)
|
# i_min = min_i(insulator_c_len, u_ph / 1.732)
|
||||||
# TODO 需要考虑交、直流
|
# 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 # 尝试的最小电流
|
_min_i = i_min # 尝试的最小电流
|
||||||
_max_i = para.max_i # 尝试的最大电流
|
_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)
|
# cad.draw(i_min, u_ph, rs_x, rs_y, rc_x, rc_y, rg_x, rg_y, rg_type, 2)
|
||||||
|
|||||||
@@ -109,6 +109,24 @@
|
|||||||
<q-tooltip>一年中雷暴天数,用于计算地闪密度</q-tooltip>
|
<q-tooltip>一年中雷暴天数,用于计算地闪密度</q-tooltip>
|
||||||
</q-input>
|
</q-input>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-12 col-md-6">
|
||||||
|
<q-input
|
||||||
|
v-model="params.parameter.z_0"
|
||||||
|
type="number"
|
||||||
|
label="雷电波阻抗 (Ω)"
|
||||||
|
>
|
||||||
|
<q-tooltip>雷电波阻抗,用于计算最小雷电流。</q-tooltip>
|
||||||
|
</q-input>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-6">
|
||||||
|
<q-input
|
||||||
|
v-model="params.parameter.z_c"
|
||||||
|
type="number"
|
||||||
|
label="导线波阻抗 (Ω)"
|
||||||
|
>
|
||||||
|
<q-tooltip>导线波阻抗,用于计算最小雷电流。</q-tooltip>
|
||||||
|
</q-input>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 导、地线挂点高度 -->
|
<!-- 导、地线挂点高度 -->
|
||||||
@@ -380,7 +398,9 @@ const defaultParams: AllParameters = {
|
|||||||
gc_x: [17.9, 17],
|
gc_x: [17.9, 17],
|
||||||
ground_angels: [0],
|
ground_angels: [0],
|
||||||
altitude: 1000,
|
altitude: 1000,
|
||||||
td: 20
|
td: 20,
|
||||||
|
z_0: 300,
|
||||||
|
z_c: 251
|
||||||
},
|
},
|
||||||
advance: {
|
advance: {
|
||||||
ng: -1,
|
ng: -1,
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ export interface Parameter {
|
|||||||
ground_angels: number[] // 地面倾角 (°)
|
ground_angels: number[] // 地面倾角 (°)
|
||||||
altitude: number // 海拔高度 (m)
|
altitude: number // 海拔高度 (m)
|
||||||
td: number // 雷暴日 (d)
|
td: number // 雷暴日 (d)
|
||||||
|
z_0: number // 雷电波阻抗 (Ω),默认 300
|
||||||
|
z_c: number // 导线波阻抗 (Ω),默认 251
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface AdvanceParameter {
|
export interface AdvanceParameter {
|
||||||
|
|||||||
@@ -332,6 +332,8 @@ class EGMWebApp:
|
|||||||
|
|
||||||
para.voltage_n = int(optional_data.get('voltage_n', 3))
|
para.voltage_n = int(optional_data.get('voltage_n', 3))
|
||||||
para.max_i = float(optional_data.get('max_i', 200))
|
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 参数
|
||||||
ac_or_dc_value = str(parameter_data.get('ac_or_dc', 'AC'))
|
ac_or_dc_value = str(parameter_data.get('ac_or_dc', 'AC'))
|
||||||
|
|||||||
Reference in New Issue
Block a user