ABAQUS中使用python脚本的节点位移

问题描述

我想使用 python 脚本获取特定节点的 U2 位移:

dy = odb.steps['LoadingStep'].frames[-1].fieldOutputs['U'].values[node_no].data[1]

问题在于 [value index] 与节点号不匹配。这意味着无法使用 values[10] 找到第 10 个节点的输出

如何获取特定节点的位移?

解决方法

您的索引值可能存在一些错误(例如,标签为“10”的节点可通过索引“9”访问)。

首先,如果您使用 node_no 获得正确的节点,请尝试检查 Abaqus Viewer python 解释器:

nd = odb.rootAssembly.instaces['MY_INSTANCE'].nodes[node_no]
highlight(nd)

请注意,如果在生成模型的过程中,使用感兴趣的节点定义 Set 会容易得多:之后您可以像访问它们一样轻松:

for nd in odb.rootAssembly.nodeSets['MY_NODE_SET']:
   print(nd.label)

当您确定您的节点时,您可以获得 FieldOutput 的一个子集,因此您不会被 FieldValueArray values 中元素的顺序所困扰:

fieldU = frame.fieldOutputs['U']
ndFieldU = fieldU.getSubset(region=my_node,position=NODAL)
ndU2 = ndFieldU.values[0].data[1]