From b4db8b612e9359e044c0dc049ee0d535d338c66e Mon Sep 17 00:00:00 2001 From: facat Date: Sun, 13 Dec 2020 17:07:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E8=87=AA=E5=8A=A8=E5=BE=AE=E5=88=86?= =?UTF-8?q?=E4=B8=AD=E5=BC=95=E7=94=A8=E7=AD=89=E5=BC=8F=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auto_differentiation.py | 35 +++++++++++++++++++++++++++++------ main.py | 16 ++++++++++------ 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/auto_differentiation.py b/auto_differentiation.py index f66cb9e..0174056 100644 --- a/auto_differentiation.py +++ b/auto_differentiation.py @@ -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.") diff --git a/main.py b/main.py index b931b0c..c3c3985 100644 --- a/main.py +++ b/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 1e-4: print("!!!偏移等式不满足。") - if i 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