您的位置:网站首页 > CAD新闻

基于ABAQUS前、后处理模块二次开发的应用

时间:2011-02-25 10:30:36 来源:

  1 ABAQUS/CAE处理过程和二次开发接口介绍

  ABAQUS/CAE处理有两个程序:①内核程序;②GUI程序。内核程序实际上就是它的脚本语言,它采用的是Python语言,同时扩展了Python语言,额外提供了大约500个对象模型,对象模型之间的关系复杂,它们间部分关系如图1所示。

  

  图1 ABAQUS对象模型

  图1中,Container表示容器,里面包括其他对象,而Singular object只表示单个对象。

  而对于GUI程序来说,它是一个方便用户输入或选择参数的图形用户接口,ABAQUS/CAE是采用IPC协议来完成内核程序和GUI程序的通信的。它们之问的通信如图2所示。

  

  图2 内核程序和GUI程序的通信

  ABAQUS有限元程序通过集成Python语言向二次开发者提供了很多库函数,通过ABAQUS脚本接口(ABAQUS Scripting Interrace),Python语言调用这些库函数来增强ABAQUS的交互式操作功能。它允许用户绕过ABAQUS/CAE的GUI(graphical user interfaces)直接与内核交互,可以大大提高工作效率或完成ABAQUS/CAE没有提供的功能。但是凶为它没有通过GUI,显的不那么直观,而且如想改变某些参数就不得不修改脚本程序,这些对一般用户来说就显的比较麻烦。因此,对ABAQUS二次开发一般应先开发出GUI后,让用户输入或选择有关参数后,然后生成ABAQUS的脚本语言来自动处理。ABAQUS的GUI是用ABAQUS GUI Toolkit来编写,它也是对FOX GUIToolkit的拓展,它在编写程序时也是遵循Python语言的格式。

  ABAQUS二次开发有如下几种途径:①通过用户子程序可以开发新的模型,控制ABAQUS计算过程和结果;②通过环境初始化文件可以改变ABAQUS的许多缺省设置;③通过内核脚本建立的函数可以用于前处理建模和后处理分析计算结果;④通过GUI脚本可以创建新的图形用户界面。本文将使用联合使用第3、4种方法,来实现对ABAQUS的前后处理的二次开发。

  2 应用举例

  本文将以庄茁老师出版的《ABAQUS非线性有限元分析与实例》一书中的P392页的ABAQUS/Explicit凹槽成型为例来说明二次开发在ABAQUS中的应用。在本文中我们将使用GUI来方便用户选择或输入参数,而在对ABAQUS的界面开发有两种方法,一是建立自己的应用程序,另一种是在ABAQUS的Plugins菜单中加载自己的菜单来实现。在本文中将分别使用这两种方法来完成预期的功能。

  2.1 二次开发在前处理中的应用

  我们都知道二次开发在前处理中主要功能是提高工作效率,对与上述例题如按照一般步骤来要完成先建模、创建材料特性、装配等过程。而在建模和装配过程中是比较费时的,尤其是在装配过程中容易出错。本节将使用第一种方法即开发出自己应用程序的界面,只要用户输入相关参数就可是自动完成建模和装配任务,以提高工作效率。

  要开发出自己的应用程序就必须综合应用Python语言和ABAQUS GUI Toolkit进行编程。为了使程序编写方便和便于检查错误,我们把不同功能的程序写在不同的文件中(也叫不同模块)。通过模块问的调用来完成整个过程。在调试好程序后,我们可以在ABAQUS Command中输入如下语句:abaqus cae-custom meichongyaApp-noStartup然后回车即可。图3是开发出来的自己应用程序界面。在工具栏菜单中选择chongy-Part and Assembly就可以得到网4的界面。在输入如图4的相关参数后,按下OK键就可以得到我想要的结果如图5所示。图6表示了不同模块之问的调用关系。

  

  图3 应用程序界面

  

  图4 用户输入对话框

  

  图5 装配效果图

  

jpg

  图6 不同模块间的调用关系

  在图6中meichongyaApp模块的主要作用是修改标准的ABAQUS/CAE GUI并初始化应用程序。chongyaMainWindow模块的主要作用是创建主窗口并加载相关标准菜单和模块。chongyaGuiModule模块的主要作用是定义用户自己的菜单,并初始化。honyga模块。chongyaForm模块中主要完成相关关键字的定义、定义好getFirstDialog并为AFXGuiCommand定义好参数。chongya模块的作用是按照图4的参数来创建模型并自动完成装配功能。

  chongyaD B模块的作用是应用ABAQUS GUI Toolkit来完成对图4的界面的排序功能,并调用Icons。模块或相关图片。本例中在此使用是调用图片,如果,要使用调用Icon。模块的方法则要用XPM图片数据作为Python的字符列表来定义icon,这样比较麻烦,尤其对于复杂的图形。(注:ABAQUS GUI Toolkit支持以下n种格式来创建icon;① XPM格式;QBMP格式;③ GIF格式;.PNG格式,而后三种格式是一般的绘图软件就支持的格式,如windows自带的画图软件就支持后三种格式,这样我们就可以不要去写复杂的Python语句了)。

  2.2二次开发在后处理中的应用

  在完成装配后,分别定义好材料属性、分析步、接触类型、边界条件和载荷、单元类型和网格划分就可以提交任务分析,最后在ABAQUS的Visualization模块中查看分析结果。在查看我们关心的结果之前,我们要判断此结果是否是准静态的,而对此判断有一个好的方法即比较动能(ALLKE)和内能(ALLIE)的历史。在金属成型分析中,大部分的内能是由于塑性变形产生的,在此模型中,为了确定是否是获得一个可接受的准静态结果,动能应该小于其内能几个百分点。

  但是,ABAQUS后处理模块中并没有直接提供动能和内能的历史动态的比值。因此在这里我们将使用上述所提到的第二种方法即在ABAQUS的Plug-ins菜单中加载自己的菜单来实现。如图7所示是在Plugins菜单中加入自己菜单。选择Result-Energy rate就可以弹出如图8所示的对话框,这是我们这要选择”Plot”按钮就可以得到我们想要的结果了,结果如图9所示。从图9我们可以看出除了在开始阶段外的整个分析步中.动能是相对于内能是一个很小的百分数。从而我们可以直接判断此结果是准静态的。图10表示在Plug-ins菜单中二次开发不同模块的调用关系。

  

  图7 Plug-ins中二次开发菜单

  

  图8 用户选择对话框

  

  图9 动能和内能历史比例关系

  

  图10 plug-ins菜单中不同模块调用关系

  energy_plugin模块主要完成关键字的定义并调用energyDB模块;同时在Plug-ins菜单中加入自己的菜单并导入energy模块。

  energyDB模块主要作用是完成对图8的排序功能,energy模块的作用是应用Python语言来实现动能和内能的动态历史比值,如图9所示。我们通过比较图6和图10不难看出,第二种方法比第一种方法要简单,但是第一种方法可以实现许多第二种方法实现不了的功能,如修改或删除ABAQUS/CAE的丁具栏或一些模块、改变程序名称等。所以,相对简单的二次开发我们就可以用第二种方法,而要想实现复杂的功能则用第一种方法。

  3 注意点

  (1)凶为本文是要在自己开发的程序中添加了标准的Plug-ins菜单,但是Plug-ins菜单的添加方法和别的标准菜单的添加方法不一样(如:File、View等)。在本文的3.1节中我们已经提到过一般标准菜单是在书MainWindow模块中添加的。如加载File菜单使用的语句为self.registerToolset(FileToolsetGui(),GUI-IN-MENUBAR GUI-IN-TOOLBAR)而Plug-ins菜单的添加方法和上面的方法不一样,它使用registerPluginToolset()语句就可以了,并且此语句不是放在加载标准菜单的模块中(如:本例的chongyaMainWindow模块),而是放在初始化程序(如本例的meichongyaApp模块)模块中。

  (2)因为ABAQUS在执行这些模块时,首先是对它们进行编译,并自动创建相应的*.pyc文件,这样如果把所有的文件都放在Temp目录下,只显得很乱,并且一答程序出现问题,也不好找,如果我们在Temp目录下建立一个文件夹把除了初始化程序(如本例的meichongyaApp模块)都发在里面,这样就显的有条理并且一但程序发生错误我们可以很快的找到相应的文件。如本文中3.1节把除了初始化程序所用的程序(模块)都发在名称为mei的文件夹内,此时应注意要在文件夹内加上一个名称为_init_.PY程序文件,它的内容只有一句话:pass,如果不加此程序,则会出现ImportError:No module named meiehongya.ehongyaMainWindow错误提示。

  4 结束语

  本文基于ABAQUS软件使用python语言和ABAQUS GUI Toolkit开发出自己应用程序,并把Plug-ins菜单加到应用程序中,其主要目的是充分利用在Plug-ins菜单中二次开发简便性;通过开发出对话框可以使本应用程序更加容易被用户所接受。在前处理的二次开发中可以自动完成建模、装配等任务,这样可以减少工作强度,提高有限元软件的使用效率;在后处理二次开发在中,通过动能和内能的比较,从而判断结果是否是准静态的,为后续分析提供依据。同时文中分析了ABAQUS的界面开两种方法的优缺点,这对有关ABAQUS其它方面的二次开发有一定的参考价值。