如何使用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)
使用 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)