电子说
二次开发可以不是从零开始
在 abaqus CAE 做二次开发,其中一个好处就是能够快速的参数化建立分析模型。
如果分析模型已经手动建好了,或者有了一个现成的模型,那二次开发实现参数化还有另一种思路:复用既有模型。
复用既有模型好处有很多,比如:模型的材料参数比较多,直接复用则省去了手动再配置的麻烦;如果只是局部需要参数化修改,那复用模型会省去不少建模的代码,等等。通常,复用的分析模型是已经比较完善的模型,只是没有实现参数化。针对既有模型的二次开发,就像实施一场“外科手术”。
复用既有模型的第一步
Abaqus二次开发有很丰富的命令,并且文档介绍也很齐全,不存在“技术门槛”,更多的是让开发思路更丰富和增加对abaqus二次开发接口的熟悉程度。
复用既有模型的第一步:要根据完整路径打开它,然后把模型对象拷贝到当前模型数据库中(mdb)。涉及的命令在“Abaqus Scripting Reference Guide”中的“Python commands”第30.1条有详细介绍。
具体命令:
打开既有模型数据库:openAuxMdb(…)
关闭既有模型数据库:closeAuxMdb(…)
拷贝既有模型:copyAuxMdbModel(…)
(注:以上三条命令都是以小写字母开头,根据abaqus二次开发命令的惯例:以小写字母开头的命令不会生成新的对象,以大写字母开头的命令会返回一个新的对象。可知以上的命令仅仅是对把既有模型数据库从硬盘读入了内存,没有对它做任何修改,也没有生成新的编程对象。)
关于命令的具体使用方法,阅读介绍文档基本不会有问题。唯一需要注意的是abaqusCAE的版本,这也是复用既有模型的一个硬伤。高版本创建的.cae文件不能被低版本的abaqusCAE打开。这可能一定程度上限制了这种二次开发方法的使用范围,但目前有很多做好的算例都是基于底版本的(比如6.14版本),所以只要确保不采用更旧的版本就基本不会有太多问题。
一场“外科手术”般的二次开发(三大关键)
只能说此处省略一万字了,具体的二次开发因需求而已。
这里提几个方面:第一,几何元素的选择和布尔运算将会是二次开发中常用到的操作。“选择”操作有非常方便的命令可以支持(比如下图中的几个命令);但是“布尔运算”的操作在abaqusCAE自带的python命令中不是特别友好,只能依靠region和set来完成布尔运算。本人对底层做了一些研究,实现了一种非常方便的布尔运算方法并做成了命令,需要的可以联系我。
第二,可能会遇到“独立网格”的问题,导致模型无法修改或难以修改。这主要是由于模型可能是采用inp文件导入的。解决这种问题需要做些额外处理,比如把需要做参数化的局部单独提取出来,采用part来替代。这里涉及到独立网格的切割和可能的边界条件的改变,以及替换的part的网格匹配问题。这些具体的问题根据需求的不同,基本能够妥善的解决。当然解决的方法是独立研发的,如果需要可以取得联系具体商议。大致原理:将需要替换的部分做成set,然后通过改写inp文件的方式做切割后,再用新的part来替换。
第三,网格重新划分的问题。应该说只要改模型,不管是手动的还是二次开发修改,都可能需要重新划分网格。
复用既有模型的二次开发,基本上是逢山开路、遇水搭桥,没有一个放之四海而皆准的套路。
复用既有模型实际上是软件工程的实践方法
为了说明这点,需要借助一个例子:如果使用过Autocad,肯定知道每次新建文件都需要选择模板,也可以自己制作模板。其实模板就是一个通用化的空模型,里面只配置了参数而没有实际的模型。
所以,你需要复用的模型,也可以采用这种思路,你只需要把各种繁琐的参数配置到.cae里面,里面的几何模型可以随便画。这种情况下,cae文件就相当于是一个配置文件了。
结语
二次开发如果说简单,那就是运行一段脚本;如果说复杂,那就是一个软件子系统。开发的思路和实现的方式会有不同,而采用那种思路和方法,决于你的需求和模型的重要程度。
编辑:lyn
全部0条评论
快来发表一下你的评论吧 !