ABAQUS-python - 将 ODB 结果写入文件

ABAQUS-python - writing ODB results to file

我有以下脚本来打开 ABAQUS ODB 文件并获取特定节点集的位移和坐标。我可以将这些打印在屏幕上,但需要帮助才能将它们写入文件(.xlsx、.cvs、.dat 或 .txt)以进行后处理。我是使用 abaqus 编写脚本的新手,因此非常感谢您的帮助。目前代码如下:

from odbAccess import *
from numpy import array

odb = openOdb(path='Test_3.odb')
lastFrame = odb.steps['Step-1'].frames[1]

displacement = lastFrame.fieldOutputs['U']
coords=lastFrame.fieldOutputs['COORD']

NodeSet_x = odb.rootAssembly.instances['CFRP_SKIN_TS-1'].nodeSets['NODE_SET_X_AXIS']
NodeSet_y = odb.rootAssembly.instances['CFRP_SKIN_TS-1'].nodeSets['NODE_SET_Y_AXIS']
    
centerDisplacement_x = displacement.getSubset(region=NodeSet_x)
NodeCoord_x = coords.getSubset(region=NodeSet_x)

centerDisplacement_y = displacement.getSubset(region=NodeSet_y)
NodeCoord_y = coords.getSubset(region=NodeSet_y)

for v in centerDisplacement_x.values:
    disp_out = v.nodeLabel, v.data[2]
    print (disp_out)

for c in NodeCoord_x.values:
    coord_out = c.nodeLabel, c.data[0], c.data[1], c.data[2]    
    print (coord_out)

odb.close()

我认为,它只是基本的文件读写操作。但无论如何。

有关如何在 python 中将数据写入文本文件的更多详细信息,请参阅以下链接。
Click here 了解如何打开和关闭 python 中的文件。
Click here了解python中的书写格式。

请遵循以下适用于任意数量节点集的简单代码行。

node_sets = ['NODE_SET_X_AXIS','NODE_SET_Y_AXIS']
for node_set in node_sets:
   fileName = '%s.dat'%node_set
   fout = open(fileName,'w')
   nset = odb.rootAssembly.instances['CFRP_SKIN_TS-1'].nodeSets[node_set]
   field = odb.steps['Step-1'].frames[1].fieldOutputs['U'].getSubset(region=nset)
   for val in field.values:
       data = val.data
       node_label = val.nodeLabel
       node = odb.rootAssembly.instances['CFRP_SKIN_TS-1'].getNodeFromLabel(label=node_label)
       coords = node.coordinates
       fout.write('%10d%14.4E%14.4E%14.4E%16.4E%16.4E%16.4E\n'%tuple([node_label,]+list(coords)+list(data)))
   
   fout.close()

此代码为每个节点集创建一个单独的文本文件。