修改收敛判据。
This commit is contained in:
parent
d7a7769a2e
commit
2d728e7439
11
data.py
11
data.py
|
|
@ -1,4 +1,4 @@
|
|||
loop_end = 100000 # 最大循环次数
|
||||
loop_end = 1000000 # 最大循环次数
|
||||
# 架线时的状态
|
||||
# 取外过无风
|
||||
string_length = 9.2 # 串长 单位m
|
||||
|
|
@ -11,8 +11,9 @@ area = 154.48 # 导线面积 mm2
|
|||
lambda_m = 14.8129 / area # 导线比载 N/(m.mm)
|
||||
# 取400m代表档距下
|
||||
sigma_m = 28517 / area # 架线时,初伸长未释放前的最低点水平应力。单位N/mm2
|
||||
span_count = 3 # 几个档距
|
||||
span_count = 4 # 几个档距
|
||||
# n个档距,n-1个直线塔
|
||||
h_array = [0, 0, 0]
|
||||
l_array = [200, 400, 600]
|
||||
t_array = [15, 15, 15]
|
||||
h_array = [0, 0, 0, 0]
|
||||
l_array = [200, 300, 1400, 500]
|
||||
t_array = [15, 15, 15, 15]
|
||||
epslon = 1e-3 # 收敛判据
|
||||
|
|
|
|||
56
main.py
56
main.py
|
|
@ -66,7 +66,7 @@ def fun_sigma_i1(
|
|||
h_i1: float,
|
||||
l_i1: float,
|
||||
lambda_i1: float,
|
||||
):
|
||||
) -> float:
|
||||
beta_i = math.atan(h_i / l_i)
|
||||
beta_i1 = math.atan(h_i1 / l_i1)
|
||||
_sigma_i1 = (
|
||||
|
|
@ -100,12 +100,13 @@ def cal_loop():
|
|||
h_array = data.h_array
|
||||
l_array = data.l_array
|
||||
t_array = data.t_array
|
||||
lambda_array = [lambda_m, lambda_m, lambda_m]
|
||||
lambda_array = [lambda_m for j in range(span_count)]
|
||||
loop_count = 1
|
||||
sigma_0 = sigma_m * 0.8
|
||||
while True:
|
||||
sigma_0 = sigma_0 + 0.001
|
||||
sigma_array = [sigma_0, 0, 0]
|
||||
# 一次增加0.1N
|
||||
sigma_0 = sigma_0 + 0.1 / data.area
|
||||
sigma_array = [sigma_0 for j in range(span_count)]
|
||||
b_i = 0
|
||||
delta_l_i_array = []
|
||||
for i in range(span_count - 1):
|
||||
|
|
@ -134,24 +135,28 @@ def cal_loop():
|
|||
h_i1 = h_array[i + 1]
|
||||
l_i1 = l_array[i + 1]
|
||||
lambda_i1 = lambda_array[i + 1]
|
||||
sigma_i1 = fun_sigma_i1(
|
||||
area,
|
||||
sigma_i,
|
||||
b_i,
|
||||
length_i,
|
||||
g_i,
|
||||
h_i,
|
||||
l_i,
|
||||
lambda_i,
|
||||
h_i1,
|
||||
l_i1,
|
||||
lambda_i1,
|
||||
)
|
||||
try:
|
||||
sigma_i1 = fun_sigma_i1(
|
||||
area,
|
||||
sigma_i,
|
||||
b_i,
|
||||
length_i,
|
||||
g_i,
|
||||
h_i,
|
||||
l_i,
|
||||
lambda_i,
|
||||
h_i1,
|
||||
l_i1,
|
||||
lambda_i1,
|
||||
)
|
||||
except ValueError:
|
||||
break
|
||||
pass
|
||||
sigma_array[i + 1] = sigma_i1
|
||||
# print("第{loop_count}轮求解。".format(loop_count=loop_count))
|
||||
# print(b_i)
|
||||
loop_count += 1
|
||||
if math.fabs(b_i) < 1e-5:
|
||||
if math.fabs(b_i) < data.epslon:
|
||||
print("迭代{loop_count}次找到解。".format(loop_count=loop_count))
|
||||
print("悬垂串偏移累加bi为{b_i}".format(b_i=b_i))
|
||||
for i in range(span_count):
|
||||
|
|
@ -173,7 +178,7 @@ def cal_loop():
|
|||
t_e,
|
||||
lambda_m,
|
||||
t_m,
|
||||
sigma_m
|
||||
sigma_m,
|
||||
)
|
||||
break
|
||||
if loop_count >= loop_end:
|
||||
|
|
@ -202,7 +207,7 @@ def verify(
|
|||
sigma_m,
|
||||
):
|
||||
# 用新版大手册p329页(5-61)第一个公式校验
|
||||
b_i=0
|
||||
b_i = 0
|
||||
for i in range(len(delta_l_i_array)):
|
||||
sigma_i = sigma_array[i]
|
||||
sigma_i1 = sigma_array[i + 1]
|
||||
|
|
@ -230,7 +235,7 @@ def verify(
|
|||
sigma_m,
|
||||
)
|
||||
if math.fabs(cal_delta_l_i - _delta_l_i) > 1e-4:
|
||||
print('!!!偏移等式不满足。')
|
||||
print("!!!偏移等式不满足。")
|
||||
beta_i = math.atan(h_i / l_i)
|
||||
beta_i1 = math.atan(h_i1 / l_i1)
|
||||
w_i = (
|
||||
|
|
@ -238,10 +243,11 @@ def verify(
|
|||
+ sigma_i * h_i / l_i
|
||||
+ (lambda_i1 * l_i1 / 2 / math.cos(beta_i1) - sigma_i1 * h_i1 / l_i1)
|
||||
)
|
||||
b_i+=delta_l_i_array[i]
|
||||
right_equ = sigma_i + b_i / math.sqrt(
|
||||
string_length ** 2 - b_i ** 2
|
||||
) * (string_g / 2 / area + w_i)
|
||||
b_i += delta_l_i_array[i]
|
||||
right_equ = sigma_i + b_i / math.sqrt(string_length ** 2 - b_i ** 2) * (
|
||||
string_g / 2 / area + w_i
|
||||
)
|
||||
# TODO 等式允许误差是否可调?
|
||||
if math.fabs(right_equ - left_equ) > 1e-4:
|
||||
print(math.fabs(right_equ - left_equ))
|
||||
print("!!!应力等式不满足")
|
||||
|
|
|
|||
Loading…
Reference in New Issue