Python处理Abaqus(ODB文件)的结果

前置准备(运行环境)

   应用python脚本读取Abaqus的结果文件odb时,需要对应的运行环境。通常在Abaqus CAE界面中直接运行python脚本,如下图所示:

AbaqusPythonScript01 AbaqusPythonScript02

  

Python代码

  • 导入相关的依赖包
from odbAccess import *
from abaqusConstants import *
#导入需要参与计算的依赖包
  •  读取Abaqus的ODB结果
odb = openOdb(path='TestElementS4.odb')
  •  获取ODB中载荷步的信息
# 获取odb中的载荷步的数量与名称
for stepName in odb.steps.keys():
    print(stepName)
#获取某个载荷步最后一帧的结果
lastFrame = odb.steps['Step-1'].frames[-1]
  •  获取场输出中设置的输出内容,例如U(位移),S(应力),PEEQ(塑性应变)
for fieldName in lastFrame.fieldOutputs.keys():
    print(fieldName)
  •  获取指定Set集的结果
#Instance中的名称主要是Part instances中名称,elementSets的变量为自定义设置Set集
topCenter = odb.rootAssembly.instances['PART-1-1'].elementSets['TEST01']

 其中instance的名称在Abaqus CAE后处理视图(visualization)可获得,同理elementSet可在该视图中获取,如下图所示:

AbaqusPythonScript03 AbaqusPythonScript04
  • 获取ODB中的目标结果,该方法中获取的数据结果类型为Dict
#获取目标结果的整体输出
stressField = odb.steps['Step-1'].frames[-1].fieldOutputs["S"]
#输出指定区域和类型结果,region为自定义的区域结果,position为应力结果类型,elementType设置单元类型
field = stressField.getSubset(region=topCenter,position=CENTROID, elementType = 'S4')

 其中需要注意的是getSubset中,可选的参数有INTEGRATION_POINTNODALELEMENT_NODALCENTROID

  • 输出ODB结果中的目标结果值
#输入目标结果值
filedValues = field.values
for v in filedValues:
    print("Element label:" + str(v.elementLabel))
    print("Von Mises:"+ str(v.mises))
  • 运行python脚本输出的部分结果
    AbaqusPythonScript05

完整代码

from odbAccess import *
from abaqusConstants import *

odb = openOdb(path='TestElementS4.odb')
Reading load step name
    print(stepName)
#Get the last frame result in the current step
lastFrame = odb.steps['Step-1'].frames[-1]
for fieldName in lastFrame.fieldOutputs.keys():
    print(fieldName)    
topCenter = odb.rootAssembly.instances['PART-1-1'].elementSets['TEST01']
stressField = odb.steps['Step-1'].frames[-1].fieldOutputs["S"]
field = stressField.getSubset(region=topCenter,position=CENTROID, elementType = 'S4')
filedValues = field.values
for v in filedValues:
    print("Element label:" + str(v.elementLabel))
    print("Von Mises:"+ str(v.mises))

参考信息

通过python脚本读取Abaqus计算的ODB结果,主要参考了abaqus的文档Abaqus Scripting User's Guide,如有兴趣请查看该文档。

posted @ 2025-12-29 19:10  SwingGodLin  阅读(3)  评论(0)    收藏  举报