1

我知道如何使用 python 脚本读取元素或元素节点应力值(未平均)。

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

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

4

1 回答 1

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'),)), )
于 2016-09-22T20:05:52.480 回答