1.增加Unittest
2.考虑利用实际地闪密度和雷电流曲线。 3.版本号v1.2.0
This commit is contained in:
26
core.py
26
core.py
@@ -21,6 +21,9 @@ class Parameter:
|
||||
altitude: int # 海拔,单位米
|
||||
max_i: float # 最大尝试电流,单位kA
|
||||
rated_voltage: float # 额定电压
|
||||
ng: float # 地闪密度 次/(每平方公里·每年)
|
||||
Ip_a: float # 概率密度曲线系数a
|
||||
Ip_b: float # 概率密度曲线系数b
|
||||
|
||||
|
||||
para = Parameter()
|
||||
@@ -186,7 +189,7 @@ def solve_circle_line_intersection(
|
||||
def min_i(string_len, u_ph):
|
||||
# 海拔修正
|
||||
altitude = para.altitude
|
||||
k_a = math.exp((altitude-1000) / 8150) # 气隙海拔修正
|
||||
k_a = math.exp((altitude - 1000) / 8150) # 气隙海拔修正
|
||||
u_50 = 1 / k_a * (530 * string_len + 35) # 50045 上附录的公式,实际应该用负极性电压的公式
|
||||
z_0 = 300 # 雷电波阻抗
|
||||
z_c = 251 # 导线波阻抗
|
||||
@@ -195,13 +198,20 @@ def min_i(string_len, u_ph):
|
||||
return r
|
||||
|
||||
|
||||
def thunder_density(i): # l雷电流幅值密度函数
|
||||
td = para.td
|
||||
def thunder_density(i, td, ip_a, ip_b): # 雷电流幅值密度函数
|
||||
# td = para.td
|
||||
r = None
|
||||
if td == 20:
|
||||
r = -(10 ** (-i / 44)) * math.log(10) * (-1 / 44) # 雷暴日20d
|
||||
if td == 40:
|
||||
r = -(10 ** (-i / 88)) * math.log(10) * (-1 / 88) # 雷暴日40d
|
||||
# ip_a = para.Ip_a
|
||||
# ip_b = para.Ip_b
|
||||
if ip_a > 0 and ip_b > 0:
|
||||
r = -(
|
||||
-ip_b / ip_a / ((1 + (i / ip_a) ** ip_b) ** 2) * ((i / ip_a) ** (ip_b - 1))
|
||||
)
|
||||
else:
|
||||
if td == 20:
|
||||
r = -(10 ** (-i / 44)) * math.log(10) * (-1 / 44) # 雷暴日20d
|
||||
if td == 40:
|
||||
r = -(10 ** (-i / 88)) * math.log(10) * (-1 / 88) # 雷暴日40d
|
||||
return r
|
||||
|
||||
|
||||
@@ -433,7 +443,7 @@ def tangent_line_k(line_x, line_y, center_x, center_y, radius, init_k=10.0):
|
||||
return np.array(k_candidate)[np.max(k_angle) == k_angle].tolist()[-1]
|
||||
|
||||
|
||||
def func_ng(td): # 地闪密度
|
||||
def func_ng(td): # 地闪密度,通过雷暴日计算
|
||||
return 0.023 * (td ** 1.3)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user