最大应力节点

2023-12-04

我正在尝试生成脚本以在最大应力位置自动创建模型视图。 我知道我可以读取每个节点并使用 python 检查每个节点的压力,但是由于模型的大小,这将需要一段时间。由于此功能出现在 CAE 中,是否有一种简单的方法来编写脚本? 一旦我知道了我感兴趣的节点,我就可以利用它的位置来生成我想要的视图。


独特节点应力的计算

首先,您必须考虑您不希望承受的压力值。 (整个张量的最大唯一节点应力,Mises,MaxPrincipal,...) 例如,如果您不需要唯一的节点米塞斯应力,您可以计算每个外推应力张量的米塞斯应力,然后计算唯一的节点应力,反之亦然。您还可以在 Abaqus CAE Gui 中找到该选项。

在这个答案中,我将展示如何计算整个独特节点应力张量的最大应力值。

首先获取应力值。 如果您安装了 Abaqus Python 6.13 或更高版本,请使用 FieldBulkData 方法获取数据。它比agentp的答案中显示的值方法要快得多。例如:

Field=odb.steps[Steps[0]].frames[1].fieldOutputs['S']
Field = Field.getSubset(position = ELEMENT_NODAL)
Values=Field.bulkDataBlocks[0].data
NodeLabels=Field.bulkDataBlocks[0].nodeLabels

现在我们有了推断的应力值。唯一值的计算复制自:与所有唯一行对应的所有行的平均值

NodeLabels_unique, unq_idx = np.unique(NodeLabels, return_inverse=True)
Values_Averaged=np.zeros((NodeLabels_unique.size,Values.shape[1]))
unq_counts = np.bincount(unq_idx)
for i in xrange(0,Values.shape[1]):
    unq_sum = np.bincount(unq_idx, weights=Values[:,i])
    Values_Averaged[:,i] = unq_sum / unq_counts

 #Index of max stress value
 max_ind=np.unravel_index(np.argmax(Values_Averaged),Values_Averaged.shape)

 #Print the results
 print("The max stress is at NodeLabel "+str(NodeLabels_unique[max_ind[0]])+ " its value is "+ str(Values_Averaged[max_ind]) +" MPa.")

在我的笔记本上,对于 17,000,000 个 Element_Nodal 值,整个平均过程大约需要 9 秒。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大应力节点 的相关文章

随机推荐