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