如何使用 Python API 在 Abaqus ODB 中获取元素集的体积?

How to get volume of element set in Abaqus ODB using Python API?

我正在使用 Abaqus 6.14-1。

我想计算 *.odb 文件中一个零件中一组元素的体积。

我尝试了以下方法,

# Extract element volumes from ODB
odbName = 'Ouput.odb'
odb = session.openOdb(odbName)
lastFrame = odb.steps['Step-1'].frames[-1]
volumeField = lastFrame.fieldOutputs['EVOL']
nucleus = odb.rootAssembly.instances['BOX-1'].elementSets['SPHERE']
volumeSet = volumeField.getSubset(region=nucleus, elementType='C3D10')
volumeFieldValues = volumeSet.values

volume = 0
for vol in volumeFieldValues:
    volume += vol

print volume
session.odbs[odbName].close()

但事实证明,'EVOL' 不再是 6.14 的有效字段输出。

我很惊讶没有明显的方法来做到这一点。我 运行 手动完成了该过程,并查看了 *'rpy 文件以查看 Abaqus 使用的方法,但未列出,只有一条消息告诉我我做了什么。

有什么建议吗?

字段输出变量EVOL对Abaqus 6.14有效;不过需要手动请求。

有关此字段输出的更多信息,请参阅 Abaqus 分析用户指南第 4.2.1 节,'Whole element variables'。

分析作业完成后,您应该能够使用您在问题中显示的脚本。

在 abaqus 2017 中,而不是

for vol in volumeFieldValues:
    volume += vol

应该是:

for vol in volumeFieldValues:
    volume += vol.data