rol=plz_ol, c=c_ca, m=m_ca, eta=eta) # Alpha模型部分计算 dk_alpha_e, dkeff_alpha_e, dadn_alpha_e, alpha_e, betas, a_alpha_e = \ closureanalysis.AlphaCalculate(fade_rate=7.2, amplitude=2/np.pi, dadn=specimen.dadn, dk=specimen.dk, kc=specimen.kc, a=specimen.a, a_range=[specimen.a_dadn_min-bias, specimen.a_alpha_end], a_amplitude=specimen.a_kc_max, stress_ratio=specimen.stress_ratio) # 原始Wheeler模型计算,塑性区系数为Irwin dadn_wheeler, dk_wheeler, a_wheeler, cp_wheeler = \ overload_analysis.WheelerCalculatingBaseParis(a_wheeler=a_alpha_e, b=specimen.thickness, w=specimen.width, ys=specimen.yield_stress, pmax=specimen.maxload, r=specimen.stress_ratio, aol=specimen.a_ol_applied, rol=plz_ol, plasticzonefactor=plz_factor, m1=m1, c=c_ca, m=m_ca, eta=eta) # Try: mix try 1 # 采用logistic sigmoid函数分配两种 # logistic sigmoid单调递增,表征crack closure sigmas = 1 / (1 + np.exp(-kappa * betas)) dadn_mixed_1 = dadn_wheeler * (1 - sigmas) + dadn_alpha_e * sigmas # 绘图部分 # Plotting plt.figure(num=1, figsize=(6, 6)) plt.scatter(specimen.dk, specimen.dadn, lw=1, marker='+', label='Experiment') if moving_average: plt.scatter(dk_ave, dadn_ave, lw=1, marker='*', label='Moving average')
factor=factor) # 高载段参数计算 m1, _ = overload_analysis.WheelerFittingBaseParis(a=a_ola, dadn=dadn_ola, dk=dk_ola, rm=rm_ola, aol=aol, rol=rol, c=c_ca, m=m_ca) # Wheeler模型指数系数m1拟合 dadn_wheeler, dk_wheeler, a_wheeler, cp_wheeler = \ overload_analysis.WheelerCalculatingBaseParis(astart=apre, afinal=max(a_Manual), b=thickness, w=width, ys=yield_strength, pmax=ppeak, r=stress_ratio, aol=aol, rol=rol, plasticzonefactor=factor, m1=m1, c=c_ca, m=m_ca) # Wheeler模型计算 # Plotting plt.figure(num=2, figsize=(10, 8)) plt.scatter(dk_Manual, dadn_Manual, lw=1, marker='+', label='Experiment') plt.plot(dk_wheeler, dadn_wheeler, label='Wheeler Fitting', color='black', linewidth=2) plt.title("FCG Rates - deltaK(Wheeler Model) with Li's factor,OLR=" + str(pol / ppeak)) plt.ylabel("FCG Rates/mm per cycle") plt.xlabel("DeltaSIF/MPa.m0.5")
# Wheeler模型指数系数m1拟合 m1, _ = overload_analysis.WheelerFittingBaseParis(a=a_ola, dadn=dadn_ola, dk=dk_ola, rm=rm_ola, aol=a_ol, rol=rol, c=c_ca, m=m_ca) # 原始Wheeler模型计算 alist = np.arange(a_fcgr_max, max(a_Manual), 0.02) dadn_wheeler, dk_wheeler, a_wheeler, cp_wheeler = \ overload_analysis.WheelerCalculatingBaseParis(a_wheeler=alist, b=thickness, w=width, ys=yield_strength, pmax=ppeak, r=stress_ratio, aol=a_ol, rol=rol, plasticzonefactor=1/math.pi, m1=m1, c=c_ca, m=m_ca) # 筛选出自dadN最高点往后的数据 dadn_old, dk_old, n_old, a_old = \ mts_analysis.FCGDataSelectByThreshold(dadn=dadn_Manual, dk=dk_Manual, n=n_Manual, a=a_Manual, threshold=a_fcgr_max, target='a', keepbigger=1) # 计算延迟结束位置(即dadN最低值对应的裂纹长度)对应的SIF kd = mts_analysis.DeltaKCalculating(b=thickness, w=width, a=a_fcgr_max + ad, pmax=ppeak, pmin=ppeak * stress_ratio) # 以alhpa_d为系数的延迟区域尺寸计算