如何使用python脚本从abaqus odb文件中读取平均节点压力?

时间:2016-09-22 05:40:05

标签: python abaqus stress odb

我知道如何使用python脚本读取元素或元素节点压力值(unaveraged)。

field = stressField.getSubset(region=topCenter,position=INTEGRATION_POINT, elementType = 'CAX4')

但我希望节点处的平均应力值。仅供参考,我的odb不包含压力的节点位置数据(即position = NODAL)。

1 个答案:

答案 0 :(得分:0)

这是比它应该更麻烦的事情之一。 你需要创建xydata:

session.xyDataListFromField(odb=odb,
        outputPosition=ELEMENT_NODAL,
        variable=(( 'S', INTEGRATION_POINT), ),
        elementSets=('PART-1-1.SETNAME', ))

这会为每个元素和每个压力成分(即巨大的)的每个节点创建一个包含对象的字典。不幸的是,字典由繁琐的描述符字符串键入,例如:

 session.xyDataObjects['S:S11 PI:PART-1-1 E: 15 N:2'].data

给出了与元素15相关联的节点2的11个压力组件。要在脚本中使用数据,您需要构造字符串,或者循环遍历字典并为每个对象解析positionDescription

编辑:如果你想要的节点平均值几乎相同。你这样做:

session.xyDataListFromField(odb=odb,
        outputPosition=NODAL,
        variable=(( 'S', INTEGRATION_POINT), ),
        nodeSets=('PART-1-1.SETNAME', ))

和字典对象的键控如下:

 session.xyDataObjects['S:S11 (Avg: 75%) PI:PART-1-1 N:2'].data

请注意,您可以发出多个session.xyDataListFromField来电并且所有数据都会进入xyDataObjects(例如,如果您想要压力和压力,您可以同时处理这两个。)

为完整起见,如果您只需要特定组件,可以请求:

 variable=(( 'S', INTEGRATION_POINT,((COMPONENT, 'S11'),)), )