💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
本数据文章描述了不同孔径和应变率的开孔AlSi10Mg材料和开孔AlSi10Mg-SiC复合材料的应力-应变曲线、能量吸收和能量吸收效率。数据是通过在60.0和01.0 s的应变速率下高达001%应变的准静态压缩载荷获得的−1符合 ISO 13,314:2011 标准。这些数据可用于比较孔径和应变率对材料压缩性能的影响。这些数据与题为“开孔AlSi10Mg-SiC复合材料的磨损行为的制造,实验调查和预测”的研究文章有关(Kolev,M.,Drenchev,L.和Petkov,V.(2023)。
-
该数据提供了有关具有不同孔径和应变速率的开孔AlSi10Mg和AlSi10Mg-SiC材料的力学行为的全面信息,这些材料正在压缩,包括数值数据和应力-应变图,这些图由弹性区域,塑性平台和致密化区域组成,变形高达60%的测试多孔材料。
- •
该数据可用于比较孔径和应变速率对材料压缩性能的影响,如压缩强度、平台应力、平台端应力、平台端应变、能量吸收和能量吸收效率。
- •
有兴趣为航空航天、汽车或生物医学设备等各种工程应用设计、优化或评估开孔金属基复合材料的研究人员和工程师可以从此处提供的数据中受益。
- •
通过基于实验数据执行数值模拟或分析模型,可以使用/重复使用报告的数据来进一步了解和/或开发实验。
- •
高级数据分析技术,如机器学习或人工智能方法,也可以应用于从数据中提取更多特征或模式。
-
本数据集旨在提供不同孔径和应变率的开孔AlSi10Mg材料和开孔AlSi10Mg-SiC复合材料的压缩性能的全面信息。这些复合材料是新型多孔金属复合材料,在高强度和轻质结构中具有潜在的应用前景,并且需要高摩擦性和耐磨性。该数据集包含准静态压缩载荷得到的材料应力-应变曲线、能量吸收和能量吸收效率特性。该数据集可用于比较孔径和应变速率对材料压缩行为的影响,以及验证用于预测其响应的数值模型或分析公式。该数据集与我们题为“开孔AlSi10Mg-SiC复合材料的磨损行为的制造,实验研究和预测”的原始研究文章[1]有关,我们在文章中制造并表征了复合材料。
📚2 运行结果
# Shadow effect objects with different transparency and smaller linewidth
pe1 = [patheffects.SimpleLineShadow(offset=(0.5,-0.5), alpha=0.4), patheffects.Normal()]
# create two subplots for the two multiplots
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))
# Plot of the actual vs predicted stress-strain as a function of time for the first multiplot
ax1.scatter(X_test[:, 0], y_test,color='cyan',label='Actual test C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X_test[:, 0], y_pred,color='orange',label='Predicted test C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X_val[:, 0], y_val,color='green',label='Actual val C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X_val[:, 0], y_val_pred,color='magenta',label='Predicted val C', linewidth=0.5,alpha=0.9,zorder=1,marker='+',path_effects=pe1)
ax1.scatter(X1_test[:, 0], y1_test,color='blue',label='Actual test SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X1_test[:, 0], y_pred1,color='red',label='Predicted test SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X1_val[:, 0], y1_val,color='yellow',label='Actual val SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax1.scatter(X1_val[:, 0], y_val_pred1,color='black',label='Predicted val SC', linewidth=0.5,alpha=0.9,zorder=1,marker='+',path_effects=pe1)
ax1.set_xlabel('Stress, %', fontsize='15', fontweight='bold')
ax1.set_ylabel('Strain, MPa', fontsize='15', fontweight='bold')
ax1.legend(loc='lower right')
# Add title
ax1.set_title("Strain rate 0.01", fontsize='18', fontweight='bold')
# Add a legend with shadow and different font size
ax1.legend(shadow=True, prop={'size':'12'}, loc='upper left')
# Set the x axis limit to 60
ax1.set_xlim(0, 60) # use set_xlim instead of xlim
# Set the y axis limit to 60
ax1.set_ylim(0, 60) # use set_ylim instead of ylim
# Change the axes numbering size and font
ax1.tick_params(axis='both', which='major', labelsize=12, labelcolor='black')
ax1.grid() # add grid to the second subplot
# Plot of the actual vs predicted stress-strain as a function of time for the second multiplot
ax2.scatter(X2_test[:, 0], y2_test,color='cyan',label='Actual test C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X2_test[:, 0], y_pred2,color='orange',label='Predicted test C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X2_val[:, 0], y2_val,color='green',label='Actual val C', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X2_val[:, 0], y_val_pred2,color='magenta',label='Predicted val C', linewidth=0.5,alpha=0.9,zorder=1,marker='+',path_effects=pe1)
ax2.scatter(X3_test[:, 0], y3_test,color='blue',label='Actual test SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X3_test[:, 0], y_pred3,color='red',label='Predicted test SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X3_val[:, 0], y3_val,color='yellow',label='Actual val SC', linewidth=1,alpha=0.9,zorder=1,path_effects=pe1)
ax2.scatter(X3_val[:, 0], y_val_pred3,color='black',label='Predicted val SC', linewidth=0.5,alpha=0.9,zorder=1,marker='+',path_effects=pe1)
ax2.set_xlabel('Stress, %', fontsize='15', fontweight='bold')
ax2.set_ylabel('Strain, MPa', fontsize='15', fontweight='bold')
# Add title
ax2.set_title("Strain rate 0.001",fontsize='18', fontweight='bold')
# Add a legend with shadow and different font size
ax2.legend(shadow=True, prop={'size':'12'}, loc='upper left')
# Set the x axis limit to 60
ax2.set_xlim(0, 60) # use set_xlim instead of xlim
# Set the y axis limit to 60
ax2.set_ylim(0, 60) # use set_ylim instead of ylim
# Change the axes numbering size and font
ax2.tick_params(axis='both', which='major', labelsize=12, labelcolor='black')
ax2.grid() # add grid to the second subplot
fig.show()
# Save the plot with dpi=500 in 'png'
fig.savefig('results/pred_stress-strain_c_multi.png', dpi=500)
部分代码:
# create a DataFrame from the variables for each dataset df1 = pd.DataFrame({"Actual test": y_test, "Predicted test": y_pred, "Actual val": y_val, "Predicted val": y_val_pred}) df2 = pd.DataFrame({"Actual test": y1_test, "Predicted test": y_pred1, "Actual val": y1_val, "Predicted val": y_val_pred1}) df3 = pd.DataFrame({"Actual test": y2_test, "Predicted test": y_pred2, "Actual val": y2_val, "Predicted val": y_val_pred2}) df4 = pd.DataFrame({"Actual test": y3_test, "Predicted test": y_pred3, "Actual val": y3_val, "Predicted val": y_val_pred3}) # save the DataFrames to an Excel file with different sheets with pd.ExcelWriter("results/pred_stress-strain_multi.xlsx") as writer: df1.to_excel(writer, sheet_name="C_0.01", index=False) df2.to_excel(writer, sheet_name="SC_0.01", index=False) df3.to_excel(writer, sheet_name="C_0.001", index=False) df4.to_excel(writer, sheet_name="SC_0.001", index=False) # Descriptive statistics # create a DataFrame from the descriptive statistics for each dataset df1_stats = df1.describe() df2_stats = df2.describe() df3_stats = df3.describe() df4_stats = df4.describe() # rename the labels of the rows df1_stats = df1_stats.rename(index={'50%': 'median'}) df2_stats = df2_stats.rename(index={'50%': 'median'}) df3_stats = df3_stats.rename(index={'50%': 'median'}) df4_stats = df4_stats.rename(index={'50%': 'median'}) # select only the standard deviation, mean, median, minimum, and maximum from each DataFrame df1_stats = df1_stats.loc[['std', 'mean', 'median', 'min', 'max']] df2_stats = df2_stats.loc[['std', 'mean', 'median', 'min', 'max']] df3_stats = df3_stats.loc[['std', 'mean', 'median', 'min', 'max']] df4_stats = df4_stats.loc[['std', 'mean', 'median', 'min', 'max']] # print the selected statistics for each DataFrame print("Statistics for C_0.01_stress-strain_data.xlsx") print(df1_stats) print("Statistics for SC_0.01_stress-strain_data.xlsx") print(df2_stats) print("Statistics for C_0.001_stress-strain_data.xlsx") print(df3_stats) print("Statistics for SC_0.001_stress-strain_data.xlsx") print(df4_stats) # save the DataFrames to an Excel file with different sheets with pd.ExcelWriter("results/statistics_stress-strain.xlsx") as writer: df1_stats.to_excel(writer, sheet_name="C_0.01", index=True) # use index=True to write the row names df2_stats.to_excel(writer, sheet_name="SC_0.01", index=True) # use index=True to write the row names df3_stats.to_excel(writer, sheet_name="C_0.001", index=True) # use index=True to write the row names df4_stats.to_excel(writer, sheet_name="SC_0.001", index=True) # use index=True to write the row names
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。