修复凑数法,之前计算方法不对。
This commit is contained in:
parent
d83d6a8224
commit
ca9c2edacf
125
main.py
125
main.py
|
|
@ -19,13 +19,13 @@ import data
|
|||
|
||||
def delta_li(
|
||||
h_i: float,
|
||||
l_i: float,
|
||||
l_i,
|
||||
lambda_i: float,
|
||||
_alpha: float,
|
||||
_elastic: float,
|
||||
_t_e: float,
|
||||
t_i: float,
|
||||
sigma_i: float,
|
||||
sigma_i,
|
||||
_lambda_m: float,
|
||||
_t_m: float,
|
||||
_sigma_m: float,
|
||||
|
|
@ -71,7 +71,7 @@ def fun_sigma_i1(
|
|||
beta_i1 = math.atan(h_i1 / l_i1)
|
||||
_sigma_i1 = (
|
||||
(
|
||||
g_i / 2 / area #g_i传入时已考虑导线分裂数
|
||||
g_i / 2 / area # g_i传入时已考虑导线分裂数
|
||||
+ lambda_i * l_i / 2 / math.cos(beta_i)
|
||||
+ lambda_i1 * l_i1 / 2 / math.cos(beta_i1)
|
||||
+ sigma_i * h_i / l_i
|
||||
|
|
@ -100,19 +100,21 @@ def cal_loop():
|
|||
h_array = data.h_array
|
||||
l_array = data.l_array
|
||||
t_array = data.t_array
|
||||
lambda_array = [lambda_m for j in range(span_count)]
|
||||
lambda_i_array = data.lambda_i_array
|
||||
loop_count = 1
|
||||
sigma_0 = sigma_m * 0.5
|
||||
sigma_0 = sigma_m * 0.2
|
||||
while True:
|
||||
if 207052==loop_count:
|
||||
aaa=1
|
||||
b_i = 0
|
||||
# 一次增加0.1N
|
||||
sigma_0 = sigma_0 + 0.01 / data.area
|
||||
sigma_0 = sigma_0 + 0.1 / data.area
|
||||
sigma_array = [sigma_0 for j in range(span_count)]
|
||||
delta_l_i_array = []
|
||||
for i in range(span_count - 1):
|
||||
for i in range(span_count):
|
||||
h_i = h_array[i]
|
||||
l_i = l_array[i]
|
||||
lambda_i = lambda_array[i]
|
||||
lambda_i = lambda_i_array[i]
|
||||
t_i = t_array[i]
|
||||
sigma_i = sigma_array[i]
|
||||
_delta_l_i = delta_li(
|
||||
|
|
@ -134,26 +136,26 @@ def cal_loop():
|
|||
g_i = string_g / data.conductor_n
|
||||
h_i1 = h_array[i + 1]
|
||||
l_i1 = l_array[i + 1]
|
||||
lambda_i1 = lambda_array[i + 1]
|
||||
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
|
||||
loop_count += 1
|
||||
if i<span_count-1:
|
||||
lambda_i1 = lambda_i_array[i + 1]
|
||||
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
|
||||
if math.fabs(b_i) < data.epsilon:
|
||||
print("迭代{loop_count}次找到解。".format(loop_count=loop_count))
|
||||
print("悬垂串偏移累加bi为{b_i}".format(b_i=b_i))
|
||||
|
|
@ -169,7 +171,7 @@ def cal_loop():
|
|||
string_g / data.conductor_n,
|
||||
sigma_array,
|
||||
delta_l_i_array,
|
||||
lambda_array,
|
||||
lambda_i_array,
|
||||
t_array,
|
||||
alpha,
|
||||
elastic,
|
||||
|
|
@ -179,6 +181,7 @@ def cal_loop():
|
|||
sigma_m,
|
||||
)
|
||||
break
|
||||
loop_count += 1
|
||||
if loop_count >= loop_end:
|
||||
print("!!!未找到解。")
|
||||
print(sigma_array)
|
||||
|
|
@ -208,17 +211,12 @@ def verify(
|
|||
b_i = 0
|
||||
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]
|
||||
t_i = t_array[i]
|
||||
# 此处用新版大手册p329页(5-58)校验偏移值。
|
||||
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]
|
||||
cal_delta_l_i = delta_li(
|
||||
h_i,
|
||||
l_i,
|
||||
|
|
@ -234,26 +232,49 @@ def verify(
|
|||
)
|
||||
if math.fabs(cal_delta_l_i - _delta_l_i) > 1e-4:
|
||||
print("!!!偏移等式不满足。")
|
||||
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)
|
||||
)
|
||||
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 # string_g已在传入时考虑了导线分裂数
|
||||
)
|
||||
# TODO 等式允许误差是否可调?
|
||||
if math.fabs(right_equ - left_equ) > 1e-4:
|
||||
print(math.fabs(right_equ - left_equ))
|
||||
print("!!!应力等式不满足")
|
||||
return
|
||||
if i<len(delta_l_i_array)-1:
|
||||
sigma_i1 = sigma_array[i + 1]
|
||||
left_equ = sigma_array[i + 1]
|
||||
lambda_i1 = lambda_array[i + 1]
|
||||
h_i1 = h_array[i + 1]
|
||||
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)
|
||||
)
|
||||
b_i += delta_l_i_array[i]
|
||||
#新版大手册p329 (5-61) 最上方公式
|
||||
right_equ = sigma_i + b_i / math.sqrt(string_length ** 2 - b_i ** 2) * (
|
||||
string_g / 2 / area + w_i # string_g已在传入时考虑了导线分裂数
|
||||
)
|
||||
# TODO 等式允许误差是否可调?
|
||||
if math.fabs(right_equ - left_equ) > 1e-4:
|
||||
print(math.fabs(right_equ - left_equ))
|
||||
print("!!!应力等式不满足")
|
||||
return
|
||||
print("等式满足。")
|
||||
|
||||
|
||||
cal_loop()
|
||||
import sympy
|
||||
|
||||
|
||||
print("Finished.")
|
||||
# sympy.init_printing(use_unicode=False)
|
||||
# a, b, c, d = sympy.symbols("a b c d")
|
||||
# m, w, n, t = sympy.symbols("m w n t")
|
||||
# b1, b2, b3 = sympy.symbols("b1 b2 b3")
|
||||
# x = sympy.symbols("x")
|
||||
# fx = (a * sympy.exp(-x / b1) + b * sympy.exp(-t / b1) + c) * sympy.cos(
|
||||
# w * x + d
|
||||
# ) + m * sympy.exp(-t / b3) * sympy.sin(w * x + n)
|
||||
# int_f = sympy.integrate(fx, x)
|
||||
# sympy.pprint(int_f, use_unicode=True)
|
||||
# sympy.print_mathml(int_f)
|
||||
# import sympy.matrices
|
||||
# u_list=sympy.symbols("u1:101")
|
||||
# sympy.pprint(u_list)
|
||||
# m=sympy.Matrix(u_list)
|
||||
# sympy.pprint(m)
|
||||
# print("Finished.")
|
||||
|
|
|
|||
Loading…
Reference in New Issue