移除一些调试的代码
This commit is contained in:
parent
77951ae54a
commit
5a75df4542
25
core.py
25
core.py
|
|
@ -1,5 +1,6 @@
|
||||||
import math
|
import math
|
||||||
import ezdxf
|
import ezdxf
|
||||||
|
import numba
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
gCAD = None
|
gCAD = None
|
||||||
|
|
@ -41,15 +42,15 @@ class Draw:
|
||||||
|
|
||||||
|
|
||||||
# 圆交点
|
# 圆交点
|
||||||
def solve_circle_intersection(rs, rc, hgav, hcav, dgc):
|
def solve_circle_intersection(rs, rc, h_gav, h_cav, dgc):
|
||||||
# 用牛顿法求解
|
# 用牛顿法求解
|
||||||
x = rc # 初始值
|
x = rc # 初始值
|
||||||
y = rc # 初始值
|
y = rc # 初始值
|
||||||
for bar in range(0, 10):
|
for bar in range(0, 10):
|
||||||
A = [[-2 * x, -2 * (y - hgav)], [-2 * (x - dgc), -2 * (y - hcav)]]
|
A = [[-2 * x, -2 * (y - h_gav)], [-2 * (x - dgc), -2 * (y - h_cav)]]
|
||||||
b = [
|
b = [
|
||||||
x ** 2 + (y - hgav) ** 2 - rs ** 2,
|
x ** 2 + (y - h_gav) ** 2 - rs ** 2,
|
||||||
(x - dgc) ** 2 + (y - hcav) ** 2 - rc ** 2,
|
(x - dgc) ** 2 + (y - h_cav) ** 2 - rc ** 2,
|
||||||
]
|
]
|
||||||
X_set = np.linalg.solve(A, b)
|
X_set = np.linalg.solve(A, b)
|
||||||
x += X_set[0]
|
x += X_set[0]
|
||||||
|
|
@ -115,9 +116,6 @@ def intersection_angle(dgc, h_gav, h_cav, i_curt, u_ph): # 暴露弧的角度
|
||||||
rc, rg, dgc, h_cav
|
rc, rg, dgc, h_cav
|
||||||
) # 暴露圆和补雷线的交点
|
) # 暴露圆和补雷线的交点
|
||||||
np_circle_intersection = np.array(circle_intersection)
|
np_circle_intersection = np.array(circle_intersection)
|
||||||
# TODO to be removed
|
|
||||||
if not circle_intersection:
|
|
||||||
abc = 123
|
|
||||||
theta2_line = np_circle_intersection - np.array([dgc, h_cav])
|
theta2_line = np_circle_intersection - np.array([dgc, h_cav])
|
||||||
theta2 = math.atan(theta2_line[1] / theta2_line[0])
|
theta2 = math.atan(theta2_line[1] / theta2_line[0])
|
||||||
np_circle_line_intersection = np.array(circle_line_intersection)
|
np_circle_line_intersection = np.array(circle_line_intersection)
|
||||||
|
|
@ -133,11 +131,6 @@ def distance_point_line(point_x, point_y, line_x, line_y, k) -> float:
|
||||||
|
|
||||||
def func_calculus_pw(theta, max_w):
|
def func_calculus_pw(theta, max_w):
|
||||||
w_fineness = 0.01
|
w_fineness = 0.01
|
||||||
r_pw = 0
|
|
||||||
# TODO to be removed
|
|
||||||
if int(max_w / w_fineness) < 0:
|
|
||||||
abc = 123
|
|
||||||
pass
|
|
||||||
w_samples, d_w = np.linspace(0, max_w, int(max_w / w_fineness), retstep=True)
|
w_samples, d_w = np.linspace(0, max_w, int(max_w / w_fineness), retstep=True)
|
||||||
cal_w_np = abs(angel_density(w_samples)) * np.sin(theta - (w_samples - math.pi / 2))
|
cal_w_np = abs(angel_density(w_samples)) * np.sin(theta - (w_samples - math.pi / 2))
|
||||||
r_pw = np.sum((cal_w_np[:-1] + cal_w_np[1:])) / 2 * d_w
|
r_pw = np.sum((cal_w_np[:-1] + cal_w_np[1:])) / 2 * d_w
|
||||||
|
|
@ -155,19 +148,11 @@ def calculus_bd(theta, rc, rs, rg, dgc, h_cav, h_gav): # 对θ进行积分
|
||||||
if d_to_rs < rs: # 相交
|
if d_to_rs < rs: # 相交
|
||||||
# 要用过直线上一点到暴露弧的切线
|
# 要用过直线上一点到暴露弧的切线
|
||||||
new_k = tangent_line_k(line_x, line_y, 0, h_gav, rs, init_k=k)
|
new_k = tangent_line_k(line_x, line_y, 0, h_gav, rs, init_k=k)
|
||||||
# TODO to be removed
|
|
||||||
if not new_k:
|
|
||||||
a = 12
|
|
||||||
tangent_line_k(line_x, line_y, 0, h_gav, rs, init_k=k)
|
|
||||||
if new_k >= 0:
|
if new_k >= 0:
|
||||||
max_w = math.atan(new_k) # 用于保护弧相切的角度
|
max_w = math.atan(new_k) # 用于保护弧相切的角度
|
||||||
elif new_k < 0:
|
elif new_k < 0:
|
||||||
max_w = math.atan(new_k) + math.pi
|
max_w = math.atan(new_k) + math.pi
|
||||||
# TODO to be removed
|
# TODO to be removed
|
||||||
if max_w < 0:
|
|
||||||
abc = 123
|
|
||||||
tangent_line_k(line_x, line_y, 0, h_gav, rs, init_k=k)
|
|
||||||
# TODO to be removed
|
|
||||||
# global gCount
|
# global gCount
|
||||||
# gCount = gCount+1
|
# gCount = gCount+1
|
||||||
# if gCount % 100 == 0:
|
# if gCount % 100 == 0:
|
||||||
|
|
|
||||||
29
main.py
29
main.py
|
|
@ -5,21 +5,19 @@ import timeit
|
||||||
|
|
||||||
|
|
||||||
def egm():
|
def egm():
|
||||||
# TODO to be removed
|
avr_n_sf = 0 # 考虑电压的影响计算的跳闸率
|
||||||
cccCount = 0
|
|
||||||
avr_n_sf = 0 # 考虑电压的影响
|
|
||||||
voltage_n = 3 # 工作电压分成多少份来计算
|
voltage_n = 3 # 工作电压分成多少份来计算
|
||||||
ng = func_ng(20)
|
ng = func_ng(20)
|
||||||
h_whole = 140 # 杆塔全高
|
h_whole = 140 # 杆塔全高
|
||||||
insulator_c_len = 6.8 # 串子绝缘长度
|
insulator_c_len = 6.8 # 串子绝缘长度
|
||||||
string_c_len = 9.2
|
string_c_len = 9.2
|
||||||
string_g_len = 0.5
|
string_g_len = 0.5
|
||||||
dgc = -0.9 # 导地线水平距离
|
dgc = -0.0 # 导地线水平距离
|
||||||
vertical_dgc = 2.7 # 导地线挂点垂直距离
|
vertical_dgc = 2.7 # 导地线挂点垂直距离
|
||||||
h_g_avr_sag = 11.67 * 2 / 3
|
h_g_avr_sag = 11.67 * 2 / 3
|
||||||
h_c_avr_sag = (14.43 - 11.67) * 2 / 3
|
h_c_avr_sag = 14.43 * 2 / 3
|
||||||
h_gav = h_whole - string_g_len - h_g_avr_sag # 地线对地平均高
|
h_gav = h_whole - string_g_len - h_g_avr_sag # 地线对地平均高
|
||||||
h_cav = h_gav - string_c_len - vertical_dgc - h_c_avr_sag # 导线对地平均高
|
h_cav = h_whole - string_c_len - vertical_dgc - h_c_avr_sag # 导线对地平均高
|
||||||
shield_angle = math.atan(dgc / (vertical_dgc + string_c_len)) * 180 / math.pi
|
shield_angle = math.atan(dgc / (vertical_dgc + string_c_len)) * 180 / math.pi
|
||||||
print(f"保护角{shield_angle:.3f}°")
|
print(f"保护角{shield_angle:.3f}°")
|
||||||
for u_bar in range(voltage_n):
|
for u_bar in range(voltage_n):
|
||||||
|
|
@ -31,7 +29,6 @@ def egm():
|
||||||
i_min = min_i(insulator_c_len, u_ph / 1.732)
|
i_min = min_i(insulator_c_len, u_ph / 1.732)
|
||||||
_min_i = i_min # 尝试的最小电流
|
_min_i = i_min # 尝试的最小电流
|
||||||
_max_i = 200 # 尝试的最大电流
|
_max_i = 200 # 尝试的最大电流
|
||||||
# TODO remove it
|
|
||||||
cad = Draw()
|
cad = Draw()
|
||||||
cad.draw(i_min, u_ph, h_gav, h_cav, dgc, 2)
|
cad.draw(i_min, u_ph, h_gav, h_cav, dgc, 2)
|
||||||
for i_bar in np.linspace(_min_i, _max_i, int((_max_i - _min_i) / 0.1)): # 雷电流
|
for i_bar in np.linspace(_min_i, _max_i, int((_max_i - _min_i) / 0.1)): # 雷电流
|
||||||
|
|
@ -40,15 +37,15 @@ def egm():
|
||||||
rc = rc_fun(i_bar, u_ph)
|
rc = rc_fun(i_bar, u_ph)
|
||||||
rg = rg_fun(i_bar, h_cav)
|
rg = rg_fun(i_bar, h_cav)
|
||||||
#######
|
#######
|
||||||
cccCount += 1
|
# cccCount += 1
|
||||||
if cccCount % 30 == 0:
|
# if cccCount % 30 == 0:
|
||||||
import core
|
# import core
|
||||||
|
#
|
||||||
core.gMSP.add_circle((0, h_gav), rs)
|
# core.gMSP.add_circle((0, h_gav), rs)
|
||||||
core.gMSP.add_circle(
|
# core.gMSP.add_circle(
|
||||||
(dgc, h_cav), rc_fun(i_bar, -u_ph), dxfattribs={"color": 4}
|
# (dgc, h_cav), rc_fun(i_bar, -u_ph), dxfattribs={"color": 4}
|
||||||
)
|
# )
|
||||||
core.gMSP.add_circle((dgc, h_cav), rc)
|
# core.gMSP.add_circle((dgc, h_cav), rc)
|
||||||
#######
|
#######
|
||||||
circle_intersection = solve_circle_intersection(rs, rc, h_gav, h_cav, dgc)
|
circle_intersection = solve_circle_intersection(rs, rc, h_gav, h_cav, dgc)
|
||||||
if not circle_intersection: # if circle_intersection is []
|
if not circle_intersection: # if circle_intersection is []
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue