274 lines
6.3 KiB
Python
274 lines
6.3 KiB
Python
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,
|
||
)
|