在自编有限元程序时,通常在计算完成后希望用云图的方式显示以获得更为直观的视觉效果。鲁迅说过“云图是否美观是有限元计算的重要评判标准,计算做得好不好,就看云图好不好”。
因此,如果自编有限元程序最终的计算结果仅仅是呆板的数据,那逼格将大大降低,无论是发 论文还是写报告都显得不太高端。
在学术圈,后处理云图常见的软件通常有Paraview,tecplot和Matlab等,利用上述软件可以一定程度上对位移,应力等数据结果进行云图显示。
本文则提供一种将自编有限元程序的计算结果用abaqus显示的方法。
具体实施方式:以某二维杆单元计算结果为例:
杆单元的节点坐标如下:
1,-1.000000,1.000000
2,1.000000,1.000000
3,.000000,.000000
4,2.000000,.000000
5,-2.000000,.000000
杆单元连接如下:
1,1,2
2,3,2
3,3,4
4,2,4
5,1,3
6,5,3
7,1,5
上述数据中第1列是单元编号,第2-3列是杆单元的第1-2节点。
节点位移如下:
0.2491870E-04,-0.5192824E-04
-0.5461379E-06,-0.4556203E-04
0.6366207E-05,-0.6147756E-04
0.000000,0.000000
0.000000,0.000000
上述数据中第一列为节点位移UX,第二列为UY。
新建py文件plot.py,按照以下格式输入内容:
可复 制文字版:
from odbAccess import *
odb = Odb(name='C3D4Model',path='displacementplot.odb')
part1 = odb.Part(name='T2D2',embeddedSpace=TWO_D_PLANAR,type=DEFORMABLE_BODY)
nodeData=((1,-1.000000,1.000000),
(2,1.000000,1.000000),
(3,.000000,.000000),
(4,2.000000,.000000),
(5,-2.000000,.000000),)
part1.addNodes(nodeData=nodeData)
elementData=((1,1,2),
(2,3,2),
(3,3,4),
(4,2,4),
(5,1,3),
(6,5,3),
(7,1,5),)
part1.addElements(elementData=elementData, type='T2D2')
instance1 = odb.rootAssembly.Instance(name='part-1-1',object=part1)
step1 = odb.Step(name='step-1',description='first step',domain=TIME, timePeriod=1)
nodeLabelData = (1,
2,
3,
4,
5)
analysisTime=1
frame1= step1.Frame(incrementNumber=1,frameValue=analysisTime,description='results frame for time '+str(analysisTime))
uField = frame1.FieldOutput(name='U',description='Displacements',type=VECTOR)
dispData=((.2491870E-04,-.5192824E-04),
(-.5461379E-06,-.4556203E-04),
(.6366207E-05,-.6147756E-04),
(.000000,.000000),
(.000000,.000000),)
uField.addData(position=NODAL, instance=instance1,labels=nodeLabelData,data=dispData)
step1.setDefaultDeformedField(uField)
odb.save()
odb.close()
print'output finished!'
上述内容即为通过py脚本文件形成abaqus的后处理odb文件displacement.odb。其中,第3行的embeddedSpace=TWO_D_PLANAR需要和实际的空间维度相对应,即如果为平面应力,平面应变,二维梁单元或者二维杆单元即为TWO_D_PLANAR,如果为三维实体单元,三维梁单元等则为THREE_D。
第4-8行为节点坐标,第10-16行为单元连接,第20-24行为节点编号,第28-32行为对应的节点的位移。
按照上述格式写成plot.py后,打开abaqus command,运行abaqus script=plot.py或者打开abaqus cae,采用file-run script,再选择plot.py即可。等到abaqus cae界面底部出现output finished!即表明已经运行成功,形成了相应的odb文件。接下来直接打开相应的displacement.odb即可看到相应的位移云图。
【完】