【问题标题】:Nodal displacement in ABAQUS using python scriptABAQUS中的节点位移使用python脚本
【发布时间】:2021-01-20 06:54:52
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python abaqus


    【解决方案1】:

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

    首先,如果您的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]
    

    【讨论】:

    • 感谢您的回答。我有需要置换的节点号。但是当我写下面一行时, dy = odb.steps['Pullout'].frames[-1].fieldOutputs['U'].getSubset(region=node_index, position=NODAL).values[0].dataDouble[ 1] ABAQUS 说:类型错误:区域;找到 int,期待 OdbInstance。我已将节点号作为 node_index 传递,我应该发送什么作为参数区域?
    • 嗯,错误信息是不言自明的:getSubset 方法采用一个对象,该对象应该指定要提取值的区域 (abaqus.software.polimi.it/v6.14/books/ker/…)。如果您查看文档,您将看到不同的对象类型被此方法接受为“区域”,但int 不是其中之一。在本示例中,my_node 的类型应该是 OdbMeshNode 或包含您感兴趣的节点的 OdbSet
    • 如果可以解决问题,您能否将答案标记为“已接受”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多