大家在使用ABAQUS软件在 后处理绘图的时候不知道有没有想过将xy数据提取出来,当然我知道有人说可以通过:Plug-ins——>tools里面的表格输出到excel,这种方法是有效的但是却只适合少数的xy数据表提取,当你计算了几百个odb文件,想要提取同一个单元应力和位移的时候,就需要借助python了。不废话直接看如何操作。首先说明我是小白,这个提取方法是我自己研究整出来的,因为我看网上的那些提取方法太高大上了,看不懂。
我演示的大多数代码都是来自于PythonReader软件(PS:使用Python做ABAQUS的应该都有这个软件的吧)
如果你在ABAQUS的后处理界面点击创建XY数据,然后选择某个模型的某个单元提取它的场输出数据,就会产生如下代码,我这里代码表示的是:我在场输出中提取部件名为TAOGUAN-1的511号单元的mises应力。
odb = session.odbs['D:/FSJ/Gypsum bed for abaqus/ABAQUS simulation/python_creep/206.38_Stratified_creep/n1.0/A_1e-10n_1_0m_-0_5.odb']
xyList = xyPlot.xyDataListFromField(odb=odb, outputPosition=INTEGRATION_POINT,
variable=(('S', INTEGRATION_POINT, ((INVARIANT, 'Mises'), )), ),
elementLabels=(('TAOGUAN-1', ('511', )), ))
xyp = session.xyPlots['XYPlot-1']
chartName = xyp.charts.keys()[0]
chart = xyp.charts[chartName]
curveList = session.curveSet(xyData=xyList)
chart.setValues(curvesToPlot=curveList)
session.charts[chartName].autoColor(lines=True, symbols=True)
从第二行代码那一串我们可以看到数据被写入了xyList里面,再下面的行数文件其实是在后处理中绘图,那些不用管。现在就是用Python的excel函数将xyList里面的函数写入excel表格,但是要注意,xyList数据其实是要通过这个表达式输出来xyLis[0].data(至于为什么我已经忘记了),具体写入excel方法如下:
import xlwt
%创建一个新的excel表格
f=xlwt.Workbook()
# 新建sheet表
sheet1=f.add_sheet('sheet1',cell_overwrite_ok=True)
# 使用循环将xy数据写入表格sheet中
for i in range(len(xyList[0].data)):
for j in range(len(xyList[0].data[i])):
sheet1.write(i,j,xyList[0].data[i][j])
# sheet1.write('\t')
# sheet1.write('\n')
# 保存数据excel表,完成数据提取
f.save('text.xls')
我这里只给出了xy数据提取的核心代码,具体打开odb文件到数据提取的内容还是要根据实际模型操作,完毕!