熟悉abaqus的人知道,对于mises应力的问题,abaqus的解决方法是先得到精确的积分点的Mises应力的解,再通过外推的方法得到节点的解。所以当你使用xydate输出节点MISES应力的时候,会得到多个值,但是如果输出高斯积分点的MISES时,会得到一个值。

如果你非常喜欢用xydate,你会发现有一个功能无法实现,就是获得模型整体的最大的Mises应力曲线。因为XYdate是基于固定节点或者单元的,而模型的最大应力单元随着工况的变化在不断的变换。

上面说了一些废话,其实想表达一个意思,再abaqus中的结果文件中是只有高斯积分点的应力的。(如我理解错误请及时指出),所以通过python的二次开发,实现abaqus所有增量步下基于积分点的Mises的表格输出与最大值查找成为可能。

目标1:在结构树的XYDATE中生成一个新的date,这个date的x选项是所有的增量步(或者时间),Y选项是每个增量步(或者时间)时模型基于积分点的最大Mises应力值。

目标2:找出整个模型MISES应力最大的单元的编号,及对应的step和frame

例:一个典型的螺栓工况,共有4个step,依次是预紧、紧固、固定螺栓长度和加载

1. 打开odb文件(必须操作)

2. 使用开发的插件:MaxMisesCurve,选择默认选项,点击OK




python 三维应力图 python画应力云图_python 三维应力图


3. 3.稍等几秒。在对话框里会显示目标2的内容


python 三维应力图 python画应力云图_源文件_02


4. .接下来到结构数中,找到生成的xydate


python 三维应力图 python画应力云图_源文件_03


这里说明下,X不是steptime。因为我想实现总时间,但是没有找到相应的熟悉,所以我用了一个增量的方法。如果step1实际由3个frame,step2有2个frame。我这里的x则是从0到4.一共5个。如果想得到时间的X的值,使用自带的xydate,任意选一个单元输出个值,把这个xydate的值替换到我这里就是以时间为增量的X值。

5. .绘制xydate曲线


python 三维应力图 python画应力云图_源文件_04


6. 可看出maxMises的变化,同时可以看出,不是最后时刻的最大。

7. 6.结果对比 由3和5,6中 都可以看到是load载荷步第一个frame的值最大,查看云图,先切换成单元积分点应力云图


python 三维应力图 python画应力云图_源文件_05


11. 然后分布对比load载荷步中的几个值


python 三维应力图 python画应力云图_python 三维应力图_06


可以看到,完美符合。说明该工具可靠。