From 2ac34196f0d25d2e2059b271f26fb75f4a92fe66 Mon Sep 17 00:00:00 2001 From: facat Date: Mon, 20 Sep 2021 22:33:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=B8=AA=E5=8D=81?= =?UTF-8?q?=E5=88=86=E4=B8=A5=E9=87=8D=E7=9A=84=E5=85=AC=E5=BC=8F=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core.py | 8 ++++---- main.py | 32 +++++++++++++++++++++++++------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/core.py b/core.py index 7d4b807..4970129 100644 --- a/core.py +++ b/core.py @@ -141,12 +141,12 @@ def fun_calculus_pw(theta, max_w): abc = 123 pass w_samples, d_w = np.linspace(0, max_w, int(max_w / w_fineness) + 1, retstep=True) - for cal_w in w_samples[: -1]: + for cal_w in w_samples[:-1]: r_pw += ( ( - abs(angel_density(cal_w)) * math.sin(theta - cal_w + math.pi) + abs(angel_density(cal_w)) * math.sin(theta - (cal_w - math.pi / 2)) + abs(angel_density(cal_w + d_w)) - * math.sin(theta - cal_w - d_w + math.pi) + * math.sin(theta - (cal_w + d_w - math.pi / 2)) ) / 2 ) * d_w @@ -154,7 +154,7 @@ def fun_calculus_pw(theta, max_w): def calculus_bd(theta, rc, rs, rg, dgc, h_cav, h_gav): # 对θ进行积分 - max_w=0 + max_w = 0 # 求暴露弧上一点的切线 line_x = math.cos(theta) * rc + dgc line_y = math.sin(theta) * rc + h_cav diff --git a/main.py b/main.py index f4bed65..4acba7e 100644 --- a/main.py +++ b/main.py @@ -3,22 +3,42 @@ import timeit def egm(): + cccCount=0 for u_bar in range(1): u_ph = math.sqrt(1) * 750 * math.cos(2 * math.pi / 3 * 0) / 1.732 # 运行相电压 h_whole = 140 # 杆塔全高 - string_len = 6.8 # 串子绝缘长度 - h_gav = h_whole - 0.5 - 11.67 * 2 / 3 # 地线对地平均高 - h_cav = h_gav - 9.2 - 2.7 - (14.43 - 11.67) * 2 / 3 # 导线对地平均高 - dgc = 0 # 导地线水平距离 + insulator_c_len = 6.8 # 串子绝缘长度 + string_c_len = 9.2 + string_g_len = 0.5 + dgc = -2.9 # 导地线水平距离 + vertical_dgc = 2.7 # 导地线挂点垂直距离 + h_g_avr_sag = 11.67 * 2 / 3 + h_c_avr_sag = (14.43 - 11.67) * 2 / 3 + h_gav = h_whole - string_g_len - h_g_avr_sag # 地线对地平均高 + h_cav = h_gav - string_c_len - vertical_dgc - h_c_avr_sag # 导线对地平均高 + shield_angle = math.atan(dgc / (vertical_dgc + string_c_len)) * 180 / math.pi + print(f"保护角{shield_angle:.3f}°") # 迭代法计算最大电流 i_max = 0 - _min_i = 20 # 尝试的最小电流 + i_min = min_i(insulator_c_len, u_ph / 1.732) + _min_i = i_min # 尝试的最小电流 _max_i = 200 # 尝试的最大电流 + #TODO remove it + cad = Draw() + 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)): # 雷电流 print(f"尝试计算电流为{i_bar:.2f}") rs = rs_fun(i_bar) rc = rc_fun(i_bar, u_ph) rg = rg_fun(i_bar, h_cav) + ####### + cccCount+=1 + if cccCount%30==0: + import core + core.gMSP.add_circle((0, h_gav), rs) + core.gMSP.add_circle((dgc, h_cav), rc_fun(i_bar, -u_ph),dxfattribs={"color": 4}) + core.gMSP.add_circle((dgc, h_cav), rc) + ####### circle_intersection = solve_circle_intersection(rs, rc, h_gav, h_cav, dgc) if not circle_intersection: # if circle_intersection is [] # print("保护弧和暴露弧无交点,检查设置参数。程序退出。") @@ -56,8 +76,6 @@ def egm(): if distance > rc: print("暴露弧已经完全被屏蔽") break - i_min = min_i(string_len, u_ph / 1.732) - cad = Draw() cad.draw(i_min, u_ph, h_gav, h_cav, dgc, 2) cad.draw(i_max, u_ph, h_gav, h_cav, dgc, 6) cad.save()