Abaqus利用region读取结果数据
Abaqus利用region读取结果数据
长安CAE
Abaqus计算完成后,为输出某部分模型的结果数据,需要用到region,并且配套使用的是getSubset函数。
示例一创建一个变量center,将一个叫做PUNCH的节点set赋值给这个变量,通过整个模型的位移场displacement得到该节点set的输出数据,代码如下:
center = odb.rootAssembly.instances['PART-1-1'].nodeSets['PUNCH']
centerDisplacement = displacement.getSubset(region=center)
centerValues = centerDisplacement.values
for v in centerValues:
print v.nodeLabel, v.data
其中的displacement是已经创建好的位移场数据,centerDisplacement变量得到该节点集的所有数据,centerValues变量得到该节点集的数值数据,通过循环输出节点号和当前数据。
示例二如下:
#创建变量topCenter,得到单元集CENT
topCenter =odb.rootAssembly.instances['PART-1-1'].elementSets['CENT']
#创建变量stressField,得到位移场数据
stressField = odb.steps['Step-2'].frames[3].fieldOutputs['S']
#创建变量field,得到该单元集的积分点的数据
field = stressField.getSubset(region=topCenter,
position=INTEGRATION_POINT, elementType = 'CAX4')
#创建变量fieldValues,得到field的数值数据
fieldValues = field.values
#循环输出单元号,单元上的积分点号以及积分点的应力分量
for v in fieldValues:
print 'Element label = ', v.elementLabel,
if v.integrationPoint:
print 'Integration Point = ', v.integrationPoint
else:
# For each tensor component.
for component in v.data:
# Print using a format. The comma at the end of the
# print statement suppresses the carriage return.
print '%-10.5f' % component,
# After each tuple has printed, print a carriage return.
最终的输出结果:
Element label = 1 Integration Point = 1
S : 0.01230 -0.05658 0.00892 -0.00015
Element label = 1 Integration Point = 2
S : 0.01313 -0.05659 0.00892 -0.00106
Element label = 1 Integration Point = 3
S : 0.00619 -0.05642 0.00892 -0.00023
Element label = 1 Integration Point = 4
S : 0.00697 -0.05642 0.00892 -0.00108
Element label = 11 Integration Point = 1
S : 0.01281 -0.05660 0.00897 -0.00146
Element label = 11 Integration Point = 2
S : 0.01183 -0.05651 0.00897 -0.00257
Element label = 11 Integration Point = 3 ...
另:对于getSubset的position有以下几个可选:
INTEGRATION_POINT !积分点
NODAL !节点(平均)
ELEMENT_NODAL !单元节点(未平均)
CENTROID !单元质心点