如何使用Abaqus/Scripting导出节点的字段输出数据和坐标?

How to export field output data and coordinates of a node using Abaqus/Scripting?

使用 Abaqus,我尝试导出节点坐标和冲击模型每个节点的 CSDMG 值,以使用 Python 重建它。但是,我的程序似乎没有提取所考虑节点的 CSDMG 值。从我的 Python 程序中提取的值与从 Abaqus/Viewer 中导出的值不同。 From Abaqus/Viewer From Python program

我的程序:

for node in instance.nodes:
    inc.append(i)
    Noeud.append(node.label)
    CoordX.append(node.coordinates[0])
    CoordY.append(node.coordinates[1])
    CoordZ.append(node.coordinates[2])
    CSDMG.append(lastFrame.fieldOutputs['CSDMG General_Contact_Domain'].values[node.label].data)
    i=i+1

我想倒数第二行读取的是 'node.label' 以外的另一个节点的 CSDMG 值。你有什么建议来改进我的代码?

当您访问字段输出的值时,属性 values 充当 FieldValue 对象的列表。由于属性 values 像列表一样工作,因此索引是从 0 开始的常规列表索引。索引是 而不是 节点标签。

Abaqus 存储按标签升序排列的字段输出结果。如果只有一个实例,则字段输出结果的顺序与实例内节点的顺序相匹配。在这种情况下,您可以使用顺序索引一个一个地访问值:

for i, node in enumerate(instance.nodes):
    inc.append(i)
    Noeud.append(node.label)
    CoordX.append(node.coordinates[0])
    CoordY.append(node.coordinates[1])
    CoordZ.append(node.coordinates[2])
    CSDMG.append(lastFrame.fieldOutputs['CSDMG General_Contact_Domain'].values[i].data)

另请注意,我使用内置函数 enumerate 替换了您对 i 的手动增量。

如果您有多个实例,那么您首先必须检索该特定实例的结果子集。获得字段输出的子集后,您可以按照与之前相同的方式进行操作。

field_output = lastFrame.fieldOutputs['CSDMG General_Contact_Domain'].getSubset(region=instance)

for i, node in enumerate(instance.nodes):
    inc.append(i)
    Noeud.append(node.label)
    CoordX.append(node.coordinates[0])
    CoordY.append(node.coordinates[1])
    CoordZ.append(node.coordinates[2])
    CSDMG.append(field_output .values[i].data)