考虑导线分裂数。

This commit is contained in:
facat 2020-06-28 16:33:42 +08:00
parent 2d728e7439
commit d83d6a8224
1 changed files with 9 additions and 11 deletions

20
main.py
View File

@ -71,7 +71,7 @@ def fun_sigma_i1(
beta_i1 = math.atan(h_i1 / l_i1) beta_i1 = math.atan(h_i1 / l_i1)
_sigma_i1 = ( _sigma_i1 = (
( (
g_i / 2 / area g_i / 2 / area #g_i传入时已考虑导线分裂数
+ lambda_i * l_i / 2 / math.cos(beta_i) + lambda_i * l_i / 2 / math.cos(beta_i)
+ lambda_i1 * l_i1 / 2 / math.cos(beta_i1) + lambda_i1 * l_i1 / 2 / math.cos(beta_i1)
+ sigma_i * h_i / l_i + sigma_i * h_i / l_i
@ -102,12 +102,12 @@ def cal_loop():
t_array = data.t_array t_array = data.t_array
lambda_array = [lambda_m for j in range(span_count)] lambda_array = [lambda_m for j in range(span_count)]
loop_count = 1 loop_count = 1
sigma_0 = sigma_m * 0.8 sigma_0 = sigma_m * 0.5
while True: while True:
# 一次增加0.1N
sigma_0 = sigma_0 + 0.1 / data.area
sigma_array = [sigma_0 for j in range(span_count)]
b_i = 0 b_i = 0
# 一次增加0.1N
sigma_0 = sigma_0 + 0.01 / data.area
sigma_array = [sigma_0 for j in range(span_count)]
delta_l_i_array = [] delta_l_i_array = []
for i in range(span_count - 1): for i in range(span_count - 1):
h_i = h_array[i] h_i = h_array[i]
@ -131,7 +131,7 @@ def cal_loop():
delta_l_i_array.append(_delta_l_i) delta_l_i_array.append(_delta_l_i)
b_i += _delta_l_i b_i += _delta_l_i
length_i = string_length length_i = string_length
g_i = string_g g_i = string_g / data.conductor_n
h_i1 = h_array[i + 1] h_i1 = h_array[i + 1]
l_i1 = l_array[i + 1] l_i1 = l_array[i + 1]
lambda_i1 = lambda_array[i + 1] lambda_i1 = lambda_array[i + 1]
@ -153,10 +153,8 @@ def cal_loop():
break break
pass pass
sigma_array[i + 1] = sigma_i1 sigma_array[i + 1] = sigma_i1
# print("第{loop_count}轮求解。".format(loop_count=loop_count))
# print(b_i)
loop_count += 1 loop_count += 1
if math.fabs(b_i) < data.epslon: if math.fabs(b_i) < data.epsilon:
print("迭代{loop_count}次找到解。".format(loop_count=loop_count)) print("迭代{loop_count}次找到解。".format(loop_count=loop_count))
print("悬垂串偏移累加bi为{b_i}".format(b_i=b_i)) print("悬垂串偏移累加bi为{b_i}".format(b_i=b_i))
for i in range(span_count): for i in range(span_count):
@ -168,7 +166,7 @@ def cal_loop():
h_array, h_array,
l_array, l_array,
string_length, string_length,
string_g, string_g / data.conductor_n,
sigma_array, sigma_array,
delta_l_i_array, delta_l_i_array,
lambda_array, lambda_array,
@ -245,7 +243,7 @@ def verify(
) )
b_i += delta_l_i_array[i] b_i += delta_l_i_array[i]
right_equ = sigma_i + b_i / math.sqrt(string_length ** 2 - b_i ** 2) * ( right_equ = sigma_i + b_i / math.sqrt(string_length ** 2 - b_i ** 2) * (
string_g / 2 / area + w_i string_g / 2 / area + w_i # string_g已在传入时考虑了导线分裂数
) )
# TODO 等式允许误差是否可调? # TODO 等式允许误差是否可调?
if math.fabs(right_equ - left_equ) > 1e-4: if math.fabs(right_equ - left_equ) > 1e-4: