parent
c8c245e717
commit
dbbba95996
|
|
@ -22,15 +22,6 @@ sympy.init_printing()
|
|||
# _t_m 导线架线时时导线温度 单位°C
|
||||
|
||||
|
||||
delta_Li__1 = sympy.symbols(
|
||||
"delta_Li:{span_count}".format(span_count=data.span_count - 1)
|
||||
)
|
||||
delta_Li = (
|
||||
*delta_Li__1,
|
||||
sympy.symbols("delta_Li_i"),
|
||||
)
|
||||
|
||||
|
||||
loop_end = data.loop_end # 最大循环次数
|
||||
# 架线时的状态
|
||||
# 取外过无风
|
||||
|
|
@ -46,129 +37,28 @@ sigma_m_data = data.sigma_m # 架线时,初伸长未释放前的最低点水
|
|||
span_count = data.span_count # 几个档距
|
||||
# n个档距,n-1个直线塔
|
||||
h_array = data.h_array
|
||||
# sympy.pprint(hi_matrix)
|
||||
l_array = data.l_array
|
||||
t_data = data.t
|
||||
conductor_n = data.conductor_n
|
||||
# ti_matrix = sympy.Matrix(t_array)
|
||||
lambda_i_array = data.lambda_i_array
|
||||
# TODO: 暂时没考虑荷载变化
|
||||
symbol_delta_l_i = exp.delta_li()
|
||||
sigma_i = sympy.symbols("sigma_i")
|
||||
d_delta_l_i_sigma_i = sympy.diff(symbol_delta_l_i, sigma_i)
|
||||
|
||||
|
||||
def get_lambdify_d_delta_l_i_sigma_i(_d_delta_l_i_sigma_i):
|
||||
(
|
||||
delta_l_i,
|
||||
l_i,
|
||||
lambda_i,
|
||||
alpha,
|
||||
E,
|
||||
t_e,
|
||||
t_i,
|
||||
lambda_m,
|
||||
t_m,
|
||||
sigma_m,
|
||||
_sigma_i,
|
||||
beta_i,
|
||||
) = sympy.symbols(
|
||||
"""
|
||||
delta_l_i,
|
||||
l_i,
|
||||
lambda_i,
|
||||
alpha,
|
||||
E,
|
||||
t_e,
|
||||
t_i,
|
||||
lambda_m,
|
||||
t_m,
|
||||
sigma_m,
|
||||
sigma_i,
|
||||
beta_i
|
||||
"""
|
||||
)
|
||||
return sympy.lambdify(
|
||||
(
|
||||
delta_l_i,
|
||||
l_i,
|
||||
lambda_i,
|
||||
alpha,
|
||||
E,
|
||||
t_e,
|
||||
t_i,
|
||||
lambda_m,
|
||||
t_m,
|
||||
sigma_m,
|
||||
_sigma_i,
|
||||
beta_i,
|
||||
),
|
||||
_d_delta_l_i_sigma_i,
|
||||
)
|
||||
|
||||
|
||||
fx_d_delta_l_i_sigma_i = get_lambdify_d_delta_l_i_sigma_i(d_delta_l_i_sigma_i)
|
||||
|
||||
fx_d_delta_l_i_sigma_i = exp.get_lambdify_d_delta_l_i_sigma_i(d_delta_l_i_sigma_i)
|
||||
delta_Li__1 = sympy.symbols(
|
||||
"delta_Li:{span_count}".format(span_count=data.span_count - 1)
|
||||
)
|
||||
delta_Li = (
|
||||
*delta_Li__1,
|
||||
sympy.symbols("delta_Li_i"),
|
||||
)
|
||||
symbol_sigma_i1 = exp.fun_sigma_i1(delta_Li)
|
||||
delta_Li_i = sympy.symbols("delta_Li_i")
|
||||
d_sigma_i1_d_l_i = sympy.diff(symbol_sigma_i1, delta_Li_i)
|
||||
|
||||
|
||||
def get_lambdify_d_sigma_i1_d_l_i(_d_sigma_i1_d_l_i):
|
||||
(
|
||||
G_i,
|
||||
A,
|
||||
lambda_i,
|
||||
lambda_i1,
|
||||
_sigma_i,
|
||||
h_i,
|
||||
h_i1,
|
||||
l_i,
|
||||
l_i1,
|
||||
stringlen_i,
|
||||
_sigma_i1,
|
||||
beta_i,
|
||||
beta_i1,
|
||||
) = sympy.symbols(
|
||||
"""
|
||||
G_i,
|
||||
A,
|
||||
lambda_i,
|
||||
lambda_i1,
|
||||
sigma_i,
|
||||
h_i,
|
||||
h_i1,
|
||||
l_i,
|
||||
l_i1,
|
||||
stringlen_i,
|
||||
sigma_i1,
|
||||
beta_i,
|
||||
beta_i1,
|
||||
"""
|
||||
)
|
||||
|
||||
return sympy.lambdify(
|
||||
(
|
||||
G_i,
|
||||
A,
|
||||
lambda_i,
|
||||
lambda_i1,
|
||||
_sigma_i,
|
||||
h_i,
|
||||
h_i1,
|
||||
l_i,
|
||||
l_i1,
|
||||
stringlen_i,
|
||||
_sigma_i1,
|
||||
beta_i,
|
||||
beta_i1,
|
||||
*delta_Li,
|
||||
),
|
||||
_d_sigma_i1_d_l_i,
|
||||
)
|
||||
|
||||
|
||||
fx_d_sigma_i1_d_l_i = get_lambdify_d_sigma_i1_d_l_i(d_sigma_i1_d_l_i)
|
||||
fx_d_sigma_i1_d_l_i = exp.get_lambdify_d_sigma_i1_d_l_i(d_sigma_i1_d_l_i, delta_Li)
|
||||
|
||||
|
||||
# 一共2n个变量,n个delta_Li,n个sigma_i
|
||||
|
|
@ -308,11 +198,7 @@ def evaluate_d_sigma_i1_d_delta_sigma_i(val_delta_li):
|
|||
def solve():
|
||||
# 初始化
|
||||
val_delta_li = [0.1 for _ in range(span_count)]
|
||||
# val_delta_li = [0.15931589580330385, -0.19294219226439696, 0.035236744603670586, -0.03124795962518869, 0.034422847061933395, 0.1639551737321582, -0.18876605469917845, 0.03862307099222713, -0.01858088432390902]
|
||||
|
||||
# val_sigma_i = [175.44277576372207, 176.07105062365383, 175.94897602628689, 175.95574563415994, 175.83116207025824, 175.84778616876434, 176.5132398968081, 176.4405408454816, 176.51871673188586]
|
||||
val_sigma_i = [sigma_m_data for _ in range(span_count)]
|
||||
|
||||
loop = 0
|
||||
while True:
|
||||
loop += 1
|
||||
|
|
@ -377,19 +263,14 @@ def solve():
|
|||
b_list.extend(fx_delta_Li)
|
||||
b_list.extend(fx_sigma_i1)
|
||||
b_list.extend(fx_sum_Li)
|
||||
# b = sympy.Matrix(b_list)
|
||||
# x = sympy.linsolve((-A, b))
|
||||
# x_list = [float(_x) for _x in list(x)[0]]
|
||||
# numpy
|
||||
# print(A.tolist())
|
||||
AA = np.array(A.tolist(), np.float64)
|
||||
# AA=np.array([[1, 0, 0, -0.0104519104486432, 0, 0], [0, 1, 0, 0, -0.00782784930594165, 0], [0, 0, 1, 0, 0, -0.00640057303461462], [-3.78731866382623, 0, 0, -1.00000000000000, 1, 0], [-3.47643075688507, -3.47643075688507, 0, 0, -1.00000000000000, 1], [1, 1, 1, 0, 0, 0]])
|
||||
# print(b.transpose().tolist()[0])
|
||||
AA = np.array(A.tolist(), dtype=np.float64)
|
||||
b = np.array(b_list, dtype=np.float64)
|
||||
# BB=[-0.159573673689794, 0.140383878899664, 0.00728144380483030, -0.378687120179166, -0.694957566239367, 0.300000000000000]
|
||||
x = np.linalg.solve(-AA, b)
|
||||
x_list = x
|
||||
abs_min: List[float] = [math.fabs(_x) for _x in x_list]
|
||||
# 强制要求等式满足
|
||||
abs_min: List[float] = [
|
||||
math.fabs(_x) for _x in [*x_list, *fx_delta_Li, *fx_sigma_i1]
|
||||
]
|
||||
abs_min.sort()
|
||||
if abs_min[-1] < 1e-5:
|
||||
break
|
||||
|
|
|
|||
4
data.py
4
data.py
|
|
@ -17,7 +17,7 @@ lambda_i_array = [
|
|||
lambda_m,
|
||||
lambda_m,
|
||||
lambda_m * 0.9,
|
||||
lambda_m * 1.1,
|
||||
lambda_m * 1.5,
|
||||
lambda_m,
|
||||
lambda_m,
|
||||
lambda_m,
|
||||
|
|
@ -29,7 +29,7 @@ lambda_i_array = [
|
|||
]
|
||||
# 取400m代表档距下
|
||||
sigma_m = 28517 / area # 架线时,初伸长未释放前的最低点水平应力。单位N/mm2
|
||||
span_count = 10 # 几个档距
|
||||
span_count = 14 # 几个档距
|
||||
# n个档距,n-1个直线塔
|
||||
h_array = [
|
||||
0,
|
||||
|
|
|
|||
103
exp.py
103
exp.py
|
|
@ -43,7 +43,6 @@ def delta_li():
|
|||
sigma_i,
|
||||
beta_i,"""
|
||||
)
|
||||
# beta_i = sympy.atan(h_i / l_i) # 高差角
|
||||
_delta_li = delta_l_i - (
|
||||
l_i
|
||||
/ ((sympy.cos(beta_i) ** 2) * (1 + (lambda_i * l_i / sigma_i) ** 2 / 8))
|
||||
|
|
@ -55,7 +54,6 @@ def delta_li():
|
|||
+ alpha * (t_i + t_e - t_m)
|
||||
)
|
||||
)
|
||||
# d_delta_li_sigma_i = sympy.diff(_delta_li, sigma_i)
|
||||
return _delta_li
|
||||
|
||||
|
||||
|
|
@ -170,3 +168,104 @@ def manual_diff_sigma_i1_d_l_i(
|
|||
)
|
||||
_t = -(dA_d_delta_L1 * B - A * dB_d_delta_L1) / (B ** 2)
|
||||
return _t
|
||||
|
||||
def get_lambdify_d_delta_l_i_sigma_i(_d_delta_l_i_sigma_i):
|
||||
(
|
||||
delta_l_i,
|
||||
l_i,
|
||||
lambda_i,
|
||||
alpha,
|
||||
E,
|
||||
t_e,
|
||||
t_i,
|
||||
lambda_m,
|
||||
t_m,
|
||||
sigma_m,
|
||||
_sigma_i,
|
||||
beta_i,
|
||||
) = sympy.symbols(
|
||||
"""
|
||||
delta_l_i,
|
||||
l_i,
|
||||
lambda_i,
|
||||
alpha,
|
||||
E,
|
||||
t_e,
|
||||
t_i,
|
||||
lambda_m,
|
||||
t_m,
|
||||
sigma_m,
|
||||
sigma_i,
|
||||
beta_i
|
||||
"""
|
||||
)
|
||||
return sympy.lambdify(
|
||||
(
|
||||
delta_l_i,
|
||||
l_i,
|
||||
lambda_i,
|
||||
alpha,
|
||||
E,
|
||||
t_e,
|
||||
t_i,
|
||||
lambda_m,
|
||||
t_m,
|
||||
sigma_m,
|
||||
_sigma_i,
|
||||
beta_i,
|
||||
),
|
||||
_d_delta_l_i_sigma_i,
|
||||
)
|
||||
|
||||
def get_lambdify_d_sigma_i1_d_l_i(_d_sigma_i1_d_l_i,delta_Li):
|
||||
(
|
||||
G_i,
|
||||
A,
|
||||
lambda_i,
|
||||
lambda_i1,
|
||||
_sigma_i,
|
||||
h_i,
|
||||
h_i1,
|
||||
l_i,
|
||||
l_i1,
|
||||
stringlen_i,
|
||||
_sigma_i1,
|
||||
beta_i,
|
||||
beta_i1,
|
||||
) = sympy.symbols(
|
||||
"""
|
||||
G_i,
|
||||
A,
|
||||
lambda_i,
|
||||
lambda_i1,
|
||||
sigma_i,
|
||||
h_i,
|
||||
h_i1,
|
||||
l_i,
|
||||
l_i1,
|
||||
stringlen_i,
|
||||
sigma_i1,
|
||||
beta_i,
|
||||
beta_i1,
|
||||
"""
|
||||
)
|
||||
|
||||
return sympy.lambdify(
|
||||
(
|
||||
G_i,
|
||||
A,
|
||||
lambda_i,
|
||||
lambda_i1,
|
||||
_sigma_i,
|
||||
h_i,
|
||||
h_i1,
|
||||
l_i,
|
||||
l_i1,
|
||||
stringlen_i,
|
||||
_sigma_i1,
|
||||
beta_i,
|
||||
beta_i1,
|
||||
*delta_Li,
|
||||
),
|
||||
_d_sigma_i1_d_l_i,
|
||||
)
|
||||
30
main.py
30
main.py
|
|
@ -69,18 +69,15 @@ def fun_sigma_i1(
|
|||
) -> float:
|
||||
beta_i = math.atan(h_i / l_i)
|
||||
beta_i1 = math.atan(h_i1 / l_i1)
|
||||
try:
|
||||
_sigma_i1 = (
|
||||
(
|
||||
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
|
||||
)
|
||||
+ sigma_i / b_i * math.sqrt(length_i ** 2 - b_i ** 2)
|
||||
) / (math.sqrt(length_i ** 2 - b_i ** 2) / b_i + h_i1 / l_i1)
|
||||
except:
|
||||
a=12
|
||||
_sigma_i1 = (
|
||||
(
|
||||
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
|
||||
)
|
||||
+ sigma_i / b_i * math.sqrt(length_i ** 2 - b_i ** 2)
|
||||
) / (math.sqrt(length_i ** 2 - b_i ** 2) / b_i + h_i1 / l_i1)
|
||||
return _sigma_i1
|
||||
|
||||
|
||||
|
|
@ -109,7 +106,7 @@ def cal_loop():
|
|||
while True:
|
||||
b_i = 0
|
||||
# 一次增加0.1N
|
||||
sigma_0 = sigma_0 + 0.1 / data.area
|
||||
sigma_0 = sigma_0 + 0.01 / data.area
|
||||
sigma_array = [sigma_0 for j in range(span_count)]
|
||||
delta_l_i_array = []
|
||||
for i in range(span_count):
|
||||
|
|
@ -213,6 +210,9 @@ def verify(
|
|||
):
|
||||
# 用新版大手册p329页(5-61)第一个公式校验
|
||||
b_i = 0
|
||||
if math.fabs((math.fsum(delta_l_i_array)))>1e-5:
|
||||
print('偏移累加不等于0')
|
||||
return
|
||||
for i in range(len(delta_l_i_array)):
|
||||
sigma_i = sigma_array[i]
|
||||
_delta_l_i = delta_l_i_array[i]
|
||||
|
|
@ -262,8 +262,8 @@ def verify(
|
|||
print("等式满足。")
|
||||
# print('sigma')
|
||||
# print(sigma_array)
|
||||
# print('delta_li')
|
||||
# print(delta_l_i_array)
|
||||
print('delta_li')
|
||||
print(delta_l_i_array)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Reference in New Issue