在自动微分中引用等式检查。
This commit is contained in:
parent
2984fac87b
commit
b4db8b612e
|
|
@ -37,8 +37,8 @@ string_g = data.string_g # 串重 单位N
|
|||
t_m_data = data.t_m # 导线架设时的气温。单位°C
|
||||
t_e_data = data.t_e # 架线时考虑初伸长的降温,取正值。单位°C
|
||||
alpha_data = data.alpha # 导线膨胀系数 1/°C
|
||||
elastic = data.elastic # 弹性系数 N/mm2
|
||||
area = data.area # 导线面积 mm2
|
||||
elastic_data = data.elastic # 弹性系数 N/mm2
|
||||
area_data = data.area # 导线面积 mm2
|
||||
lambda_m_data = data.lambda_m # 导线比载 N/(m.mm)
|
||||
sigma_m_data = data.sigma_m # 架线时,初伸长未释放前的最低点水平应力。单位N/mm2
|
||||
span_count = data.span_count # 几个档距
|
||||
|
|
@ -116,7 +116,7 @@ def evaluate_d_delta_l_i_sigma_i(val_delta_l_li, val_sigma_i):
|
|||
(l_i, l_array[i]),
|
||||
(lambda_i, lambda_i_array[i]),
|
||||
(alpha, alpha_data),
|
||||
(E, elastic),
|
||||
(E, elastic_data),
|
||||
(t_e, t_e_data),
|
||||
(t_i, t_data),
|
||||
(lambda_m, lambda_m_data),
|
||||
|
|
@ -174,7 +174,7 @@ def evaluate_d_sigma_i1_d_delta_l_i(val_delta_l_li, val_sigma_i):
|
|||
_val = d_sigma_i1_d_l_i.subs(
|
||||
[
|
||||
(G_i, string_g / conductor_n),
|
||||
(A, area),
|
||||
(A, area_data),
|
||||
(lambda_i, lambda_i_array[i]),
|
||||
(lambda_i1, lambda_i_array[i + 1]),
|
||||
(_sigma_i, val_sigma_i[i]),
|
||||
|
|
@ -277,7 +277,7 @@ def solve():
|
|||
l_array[i],
|
||||
lambda_i_array[i],
|
||||
alpha_data,
|
||||
elastic,
|
||||
elastic_data,
|
||||
t_e_data,
|
||||
t_data,
|
||||
val_sigma_i[i],
|
||||
|
|
@ -290,7 +290,7 @@ def solve():
|
|||
fx_sigma_i1.append(
|
||||
val_sigma_i[i + 1]
|
||||
- main.fun_sigma_i1(
|
||||
area,
|
||||
area_data,
|
||||
val_sigma_i[i],
|
||||
math.fsum(val_delta_li[0 : i + 1]),
|
||||
string_length,
|
||||
|
|
@ -346,7 +346,30 @@ def solve():
|
|||
print(loop)
|
||||
print(val_delta_li)
|
||||
print(val_sigma_i)
|
||||
verify(val_delta_li,val_sigma_i)
|
||||
|
||||
|
||||
def verify(val_delta_li, val_sigma_i):
|
||||
main.verify(
|
||||
area_data,
|
||||
h_array,
|
||||
l_array,
|
||||
string_length,
|
||||
string_g / conductor_n,
|
||||
val_sigma_i,
|
||||
val_delta_li,
|
||||
lambda_i_array,
|
||||
t_data,
|
||||
alpha_data,
|
||||
elastic_data,
|
||||
t_e_data,
|
||||
lambda_m_data,
|
||||
t_m_data,
|
||||
sigma_m_data,
|
||||
1e-5,
|
||||
)
|
||||
|
||||
|
||||
solve()
|
||||
|
||||
print("Finished.")
|
||||
|
|
|
|||
16
main.py
16
main.py
|
|
@ -134,7 +134,7 @@ def cal_loop():
|
|||
g_i = string_g / data.conductor_n
|
||||
h_i1 = h_array[i + 1]
|
||||
l_i1 = l_array[i + 1]
|
||||
if i<span_count-1:
|
||||
if i < span_count - 1:
|
||||
lambda_i1 = lambda_i_array[i + 1]
|
||||
try:
|
||||
sigma_i1 = fun_sigma_i1(
|
||||
|
|
@ -160,7 +160,9 @@ def cal_loop():
|
|||
for i in range(span_count):
|
||||
print("第{i}档导线应力为{tension}".format(i=i, tension=sigma_array[i]))
|
||||
for i in range(span_count - 1):
|
||||
print("第{i}串偏移值为{bias}".format(i=i, bias=math.fsum(delta_l_i_array[0:i])))
|
||||
print(
|
||||
"第{i}串偏移值为{bias}".format(i=i, bias=math.fsum(delta_l_i_array[0:i]))
|
||||
)
|
||||
verify(
|
||||
area,
|
||||
h_array,
|
||||
|
|
@ -204,6 +206,7 @@ def verify(
|
|||
lambda_m,
|
||||
t_m,
|
||||
sigma_m,
|
||||
epsilon=1e-4,
|
||||
):
|
||||
# 用新版大手册p329页(5-61)第一个公式校验
|
||||
b_i = 0
|
||||
|
|
@ -230,7 +233,7 @@ def verify(
|
|||
)
|
||||
if math.fabs(cal_delta_l_i - _delta_l_i) > 1e-4:
|
||||
print("!!!偏移等式不满足。")
|
||||
if i<len(delta_l_i_array)-1:
|
||||
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]
|
||||
|
|
@ -244,18 +247,19 @@ def verify(
|
|||
+ (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) 最上方公式
|
||||
# 新版大手册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:
|
||||
if math.fabs(right_equ - left_equ) > epsilon:
|
||||
print(math.fabs(right_equ - left_equ))
|
||||
print("!!!应力等式不满足")
|
||||
return
|
||||
print("等式满足。")
|
||||
|
||||
if __name__=='__main__':
|
||||
|
||||
if __name__ == "__main__":
|
||||
cal_loop()
|
||||
import sympy
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue