我知道如何使用 python 脚本读取元素或元素节点应力值(未平均)。
field = stressField.getSubset(region=topCenter,position=INTEGRATION_POINT, elementType = 'CAX4')
但我想要节点处的平均应力值。仅供参考,我的 odb 不包含压力的节点位置数据(即,位置 = NODAL)。
这是比应有的更麻烦的事情之一。你需要创建 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'),)), )