获取odb中某一个集合的数据,有代码实现和cae实现
代码实现:主要的是一个getSubset的函数,可以参考abaqus手册
odb = openOdb(path='Job-2.odb') # 打开odb文件
print odb.rootAssembly.elementSets.keys() # 查看odb文件中可用的单元集合
elementset=odb.rootAssembly.elementSets[odb.rootAssembly.elementSets.keys()[1]] # 创建一个OdbSet
stressField = odb.steps['Step-1'].frames[1].fieldOutputs['S'] # 创建整个场输出数据
field = stressField.getSubset(region=elementset, position=INTEGRATION_POINT, elementType='C3D6') # 获取单元集的输出数据
fieldValues = field.values # fieldValues的数据类型为 FieldValueArray
for v in fieldValues:
print v
# 想获取什么内容,就输入对应的名称,比如v.data=[ 1.71781802177429, 0.00304327975027263, 0.0132824070751667, 1.27494768094039e-05, 8.11893332866021e-05,-0.0778346583247185]
# v.elementLabel=18080
#{'baseElementType': 'C3D6', 'conjugateData': None, 'conjugateDataDouble': 'unknown',
# 'data': array([1.71781802177429, 0.00304327975027263, 0.0132824070751667, 1.27494768094039e-05, 8.11893332866021e-05,-0.0778346583247185], 'f'),
# 'dataDouble': 'unknown', 'elementLabel': 18080, 'face': None, 'instance': 'OdbInstance
# object', 'integrationPoint': 2, 'inv3': 1.69891095161438, 'localCoordSystem': None,
# 'localCoordSystemDouble':'unknown', 'magnitude': None, 'maxInPlanePrincipal': 0.0, 'maxPrincipal': 1.71781802177429,
# 'midPrincipal':0.086165688931942, 'minInPlanePrincipal': 0.0, 'minPrincipal': -0.0698400065302849, 'mises': 1.71498501300812,
# 'nodeLabel': None, 'outOfPlanePrincipal': 0.0, 'position': INTEGRATION_POINT, 'precision': SINGLE_PRECISION,
# 'press': -0.578047931194305, 'sectionPoint': None, 'tresca': 1.78765797615051, 'type': TENSOR_3D_FULL}
cae实现:在Visualization-->Tools-->Display Group-->create ,创建集合相应的display group, 再点击Query-->Probe values,可以选择输出相应的display group 的各种数据