增加等式满足校验。
This commit is contained in:
parent
b926a0c5a7
commit
efbf55d531
69
main.py
69
main.py
|
|
@ -98,21 +98,22 @@ def cal_loop():
|
||||||
span_count = 3 # 几个档距
|
span_count = 3 # 几个档距
|
||||||
# n个档距,n-1个直线塔
|
# n个档距,n-1个直线塔
|
||||||
h_array = [0, 0, 0]
|
h_array = [0, 0, 0]
|
||||||
l_array = [300, 400, 500]
|
l_array = [400, 400, 400]
|
||||||
t_array = [15, 15, 15]
|
t_array = [15, 15, 15]
|
||||||
lambda_array = [lambda_m, lambda_m, lambda_m]
|
lambda_array = [lambda_m, lambda_m, lambda_m]
|
||||||
loop_count = 1
|
loop_count = 1
|
||||||
sigma_0 = sigma_m * 0.8
|
sigma_0 = sigma_m * 0.8
|
||||||
while True:
|
while True:
|
||||||
sigma_0 = sigma_0 + 0.001
|
sigma_0 = sigma_0 + 0.001
|
||||||
sigma = [sigma_0, 0, 0]
|
sigma_array = [sigma_0, 0, 0]
|
||||||
b_i = 0
|
b_i = 0
|
||||||
|
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]
|
||||||
l_i = l_array[i]
|
l_i = l_array[i]
|
||||||
lambda_i = lambda_array[i]
|
lambda_i = lambda_array[i]
|
||||||
t_i = t_array[i]
|
t_i = t_array[i]
|
||||||
sigma_i = sigma[i]
|
sigma_i = sigma_array[i]
|
||||||
_delta_l_i = delta_li(
|
_delta_l_i = delta_li(
|
||||||
h_i,
|
h_i,
|
||||||
l_i,
|
l_i,
|
||||||
|
|
@ -126,6 +127,7 @@ def cal_loop():
|
||||||
t_m,
|
t_m,
|
||||||
sigma_m,
|
sigma_m,
|
||||||
)
|
)
|
||||||
|
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
|
||||||
|
|
@ -145,20 +147,75 @@ def cal_loop():
|
||||||
l_i1,
|
l_i1,
|
||||||
lambda_i1,
|
lambda_i1,
|
||||||
)
|
)
|
||||||
sigma[i + 1] = sigma_i1
|
sigma_array[i + 1] = sigma_i1
|
||||||
# print("第{loop_count}轮求解。".format(loop_count=loop_count))
|
# print("第{loop_count}轮求解。".format(loop_count=loop_count))
|
||||||
# print(b_i)
|
# print(b_i)
|
||||||
loop_count += 1
|
loop_count += 1
|
||||||
if math.fabs(b_i) < 1e-5:
|
if math.fabs(b_i) < 1e-5:
|
||||||
print("找到解。")
|
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):
|
||||||
|
print("第{i}档导线应力为{tension}".format(i=i, tension=sigma_array[i]))
|
||||||
|
for i in range(span_count - 1):
|
||||||
|
print("第{i}串偏移值为{bias}".format(i=i, bias=delta_l_i_array[i]))
|
||||||
|
verify(
|
||||||
|
area,
|
||||||
|
h_array,
|
||||||
|
l_array,
|
||||||
|
string_length,
|
||||||
|
string_g,
|
||||||
|
sigma_array,
|
||||||
|
delta_l_i_array,
|
||||||
|
lambda_array,
|
||||||
|
)
|
||||||
break
|
break
|
||||||
if loop_count >= loop_end:
|
if loop_count >= loop_end:
|
||||||
print("!!!未找到解。")
|
print("!!!未找到解。")
|
||||||
print(sigma)
|
print(sigma_array)
|
||||||
print(b_i)
|
print(b_i)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
# 检验等式。
|
||||||
|
def verify(
|
||||||
|
area: float,
|
||||||
|
h_array: [float],
|
||||||
|
l_array: [float],
|
||||||
|
string_length: [float],
|
||||||
|
string_g: [float],
|
||||||
|
sigma_array: [float],
|
||||||
|
delta_l_i_array: [float],
|
||||||
|
lambda_array: [float],
|
||||||
|
):
|
||||||
|
# 用新版大手册p329页(5-61)最第一个公式校验
|
||||||
|
for i in range(len(delta_l_i_array)):
|
||||||
|
sigma_i = sigma_array[i]
|
||||||
|
sigma_i1 = sigma_array[i + 1]
|
||||||
|
left_equ = sigma_array[i + 1]
|
||||||
|
_delta_l_i = delta_l_i_array[i]
|
||||||
|
lambda_i = lambda_array[i]
|
||||||
|
lambda_i1 = lambda_array[i + 1]
|
||||||
|
h_i = h_array[i]
|
||||||
|
h_i1 = h_array[i + 1]
|
||||||
|
l_i = l_array[i]
|
||||||
|
l_i1 = l_array[i + 1]
|
||||||
|
beta_i = math.atan(h_i / l_i)
|
||||||
|
beta_i1 = math.atan(h_i1 / l_i1)
|
||||||
|
w_i = (
|
||||||
|
lambda_i * l_i / 2 / math.cos(beta_i)
|
||||||
|
+ sigma_i * h_i / l_i
|
||||||
|
+ (lambda_i1 * l_i1 / 2 / math.cos(beta_i1) - sigma_i1 * h_i1 / l_i1)
|
||||||
|
)
|
||||||
|
right_equ = sigma_i + delta_l_i_array[i] / math.sqrt(
|
||||||
|
string_length ** 2 - delta_l_i_array[i] ** 2
|
||||||
|
) * (string_g / 2 / area + w_i)
|
||||||
|
if math.fabs(right_equ - left_equ) > 1e-4:
|
||||||
|
print("!!!等式不满足")
|
||||||
|
return
|
||||||
|
print("等式满足。")
|
||||||
|
|
||||||
|
|
||||||
cal_loop()
|
cal_loop()
|
||||||
|
|
||||||
|
|
||||||
print("Finished.")
|
print("Finished.")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue