unbanlanced_tension/exp.py

274 lines
6.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sympy
import math
# h 悬点高差
# l_i 悬点档距
# alpha 导线膨胀系数 1/°C
# elastic 弹性系数 N/mm2
# t_e 架线时考虑初伸长的降温取正值。单位°C
# lambda_i 计算不平衡张力时导线比载 N/(m.mm)
# sigma_i 计算不平衡张力时最低点水平应力 单位N/mm2
# t_i 计算不平衡张力时导线温度 单位°C
# lambda_m 导线架线时时导线比载 N/(m.mm)
# sigma_m 导线架线时时最低点水平应力 单位N/mm2
# t_m 导线架线时时导线温度 单位°C
def delta_li():
(
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,"""
)
_delta_li = delta_l_i - (
l_i
/ ((sympy.cos(beta_i) ** 2) * (1 + (lambda_i * l_i / sigma_i) ** 2 / 8))
* (
(l_i * sympy.cos(beta_i)) ** 2
/ 24
* ((lambda_m / sigma_m) ** 2 - (lambda_i / sigma_i) ** 2)
+ ((sigma_i - sigma_m) / E / sympy.cos(beta_i))
+ alpha * (t_i + t_e - t_m)
)
)
return _delta_li
# area 导线截面 单位mm2
# sigma_i 第i档内水平应力 单位N/mm2
# b_i 悬垂串沿线路方向水平偏移距离,沿大号方向为正,反之为负。 单位m
# stringlen_i 第i基直线塔串长 单位m
# G_i 第i基直线塔串重 单位N
# h_i 悬垂串处千中垂位置时,,第 i 基对第 i-1 杆塔上导线悬挂点间的高差大号比小号杆塔悬挂点高者h本身为正值反之为负值。
# lambda_i 第i档导线比载 N/(m.mm)
# h_i1 悬垂串处千中垂位置时,第 i+1 基对第 i 杆塔上导线悬挂点间的高差大号比小号杆塔悬挂点高者h本身为正值反之为负值。
# lambda_i1
def fun_sigma_i1(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
"""
)
def b_i():
_t = sympy.Float(0)
for f in delta_Li:
_t += f
return _t
_sigma_i1 = sigma_i1 - (
(
G_i / 2 / A # G_i传入时已考虑导线分裂数
+ lambda_i * l_i / 2 / sympy.cos(beta_i)
+ lambda_i1 * l_i1 / 2 / sympy.cos(beta_i1)
+ sigma_i * h_i / l_i
)
+ sigma_i / b_i() * sympy.sqrt(stringlen_i ** 2 - b_i() ** 2)
) / (sympy.sqrt(stringlen_i ** 2 - b_i() ** 2) / b_i() + h_i1 / l_i1)
return _sigma_i1
def manual_diff_delta_li_sigma_i(
h_i, l_i, lambda_m, lambda_i, sigma_i, sigma_m, alpha, t_i, t_e, t_m, E
):
beta_i = math.atan(h_i / l_i)
A = (
(l_i * math.cos(beta_i)) ** 2
/ 24
* ((lambda_m / sigma_m) ** 2 - (lambda_i / sigma_i) ** 2)
+ (sigma_i - sigma_m) / E / math.cos(beta_i)
+ alpha * (t_i + t_e - t_m)
)
B = 1 + (lambda_i * l_i / sigma_i) ** 2 / 8
dA_dsigma_i = ((l_i * math.cos(beta_i)) ** 2) / 24 * 2 * lambda_i ** 2 * (
sigma_i ** (-3)
) + 1 / E / math.cos(beta_i)
dB_dsigma_i = -2 * (lambda_i * l_i) ** 2 / 8 * (sigma_i ** (-3))
_t = -l_i / (math.cos(beta_i) ** 2) * (dA_dsigma_i * B - A * dB_dsigma_i) / (B ** 2)
return _t
def manual_diff_sigma_i1_d_l_i(
h_i, l_i, h_i1, l_i1, Gi, A, lambda_i, lambda_i1, sigma_i, stringlen, b_i
):
beta_i = math.atan(h_i / l_i)
beta_i1 = math.atan(h_i1 / l_i1)
A = (
Gi / 2 / A
+ 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 * ((stringlen ** 2 - b_i ** 2) ** 0.5)
)
B = ((stringlen ** 2 - b_i ** 2) ** 0.5) / b_i + h_i1 / l_i1
dA_d_delta_L1 = (
sigma_i
* (
-((stringlen ** 2 - b_i ** 2) ** -0.5) * (b_i ** 2)
- (stringlen ** 2 - b_i ** 2) ** 0.5
)
/ (b_i ** 2)
)
dB_d_delta_L1 = (
1
/ (b_i ** 2)
* (
-((stringlen ** 2 - b_i ** 2) ** -0.5) * (b_i ** 2)
- (stringlen ** 2 - b_i ** 2) ** 0.5
)
)
_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,
)