本文摘要(由AI生成):
文章主要介绍了ABAQUS/CAE二次开发的基本现状、学习资源和方法。二次开发可以更好地满足用户需求,快速迭代更新,但需要持续为商业软件支付费用。ABAQUS/CAE二次开发的学习资源包括书籍、文章和视频课程等。学习ABAQUS/CAE二次开发的方法包括学习rpy文件、查阅《Abaqus Scripting Reference Guide》和录制视频课程等。
当一个公司或科研机构想要获得定制化的结构分析工具时,通常可以选择自行开发响应的程序或使用通用有限元软件进行二次开发。从头进行开发的好处在于可以获得高度定制化的程序,完全契合用户的需求,且不需要付出额外的版权支出,但自行开发的软件也存在诸如不稳定,求解效率低下,缺乏验证和检验等诸多弊端。尤其是有限元求解器的开发难度巨大,需要持续的投入。
二次开发则意味着可以使用现有的商业软件经过多年发展的,成熟稳健的求解器,且可以较好地契合用户需求,快速迭代更新,但需要持续为商业软件支付费用。
以前的时候经常听到一种错误的观念,认为复杂的,需要通过脚本来生成模型的有限元分析工作,如周期性重复的结构,或需要大量分析步的复杂分析流程,以及行业定制分析工具,都只能通过ANSYS的APDL语言来完成。在ABAQUS的使用中,也会遇到一些修改INP文件的操作,所以很多初学者经常将INP文件和APDL语言相比。如果将这两个相比,则会得出ABAQUS的INP文件结构不够灵活,没有逻辑操作命令(如判断,循环等相关结构),无法有效的进行参数化和二次开发的结论。
其实之所以形成上述偏见,完全是因为没有认识到ABAQUS可以使用Python进行开发。形成这样的局面的主要原因是ANSYS在7.0版本之前,都是依赖于其传统界面。ANSYS的传统界面进行GUI操作的效率较低,因此通常采用命令行的方式交互。至今市面上仍然存在极大量的讲述APDL语言的书籍,因此读者较容易接触到。相比之下ABAQUS本身的所有操作都可以不依赖脚本实现,GUI 操作效率较高,且二次开发的资料比较少。
我最早接触ABAQUS/CAE的二次开发的时候,市面上只有一本关于ABAQUS二次开发的书籍——曹金凤老师的《Python语言在ABAQUS中的应用》 ,且这本书在北方工业大学图书馆中被归类到TP391类,即计算机类书籍中,而不是我通常活动的O24类(计算数学,有限元书籍通常归为此类),十分偏僻,因此初期的学习十分困难。
后来江丙云博士出版了《ABAQUS Python二次开发攻略》 ,贾利勇老师出版了《Abaqus GUI程序开发指南》 , 在此期间又通过江丙云博士的文章了解到了《PYTHON SCRIPTS FOR ABAQUS :LEARN BY EXAMPLE》这本非常优秀的教材,160美元的价格让一向买书如山倒的我也十分心疼。
此外还有一本台湾出版的《一劍雙刃:讓CAE如虎添翼的ABAQUS+Python》 ,也是江丙云博士所写,尚没有拜读过,不过看目录似乎与《攻略》区别不大。王鹰宇博士翻译了《ABAQUS GUI工具箱用户手册》 ,对没有任何GUI开发经验的我来说十分艰涩难懂。
去年(2019年)6月出版了《深海管道试验的数值模拟理论及应用:ABAQUS参数化设计中的Python脚本》 。这些书也就是目前能找到的所有ABAQUS/CAE二次开发的书籍。
图1 市面上现有的ABAQUS书籍中较适合初学者的部分
说起ABAQUS的二次开发,首先需要了解到的一点就是ABAQUS软件的结构。和很多著名的有限元软件一样,ABAQUS软件的最初版本只包含了求解器,并没有相关的前后处理程序。
ABAQUS/CAE的出现终结了ABAQUS“裸奔”的现状,但是ABAQUS的求解器使用Fortran开发,而CAE采用Python开发,两个软件只能通过CAE写出文本文件,求解器再读入文本文件这种低效率的方式进行交互,也造成了二次开发的割裂——有的用户需要同时使用Python和Fortran两种语言分别针对前后处理和求解器进行开发,才能得到想要的效果。
因此,在进行二次开发时,用户首先需要解决的问题就是确认自己需要的开发的模块,是对CAE开发还是对求解器开发,才能确认使用何种语言进行开发,以防南辕北辙。
总的来说,脚本适合解决ABAQUS/CAE中可以完成,但因存在大量重复十分耗时的工作,如图3中网架的定义。而子程序则用于生成ABAQUS中无法实现的功能,如全新的单元或材料本构关系等。
图3中网架的定义是ABAQUS/CAE二次开发的典型应用场景。使用脚本可以快速生成任意尺寸的平面四角锥网架并自动进行分析和优化。
图3 使用ABAQUS脚本生成的四角锥平面网架
当一个公司或科研机构想要获得定制化的结构分析工具时,通常可以选择自行开发响应的程序或使用通用有限元软件进行二次开发。从头进行开发的好处在于可以获得高度定制化的程序,完全契合用户的需求,且不需要付出额外的版权支出。二次开发则意味着可以使用现有的商业软件经过多年发展的,成熟稳健的求解器,且可以较好地契合用户需求,快速迭代更新,但需要持续为商业软件支付费用。
CSEPA为中南建筑设计院基于ABAQUS开发的,面向高层、大跨等复杂建筑结构的分析系统。该系统采用AutoCAD作为前处理器,ABAQUS作为求解器,ABAQUS/CAE作为后处理器,实现了复杂建筑模型的建模,计算和后处理,总体功能类似于CivilFEM。
贾利勇等在工作中只做了大量的用于飞机结构设计和复合材料分析的相关插件,这些插件中的一部分在其著作《ABAQUS GUI程序开发指南》中有所反映,但也许是出于保密等原因,此书重点讲解了GUI的开发流程,对其核心程序并没有过多涉及,因此有大量的工作目前仍无法看到,十分遗憾。
达索官方也制作了大量的插件,诸如用于焊接过程精细化分析的AWI,用于RVE(代表性体积单元)分析的ABAQUS FE-RVE 等诸多插件。
很多时候大家不免会比较ABAQUS/CAE二次开发与ANSYS APDL语言对比。APDL是专门为有限元分析定制的脚本语言,其最大的优势在于功能上更贴近有限元分析,因此语法较短,最大的弊端在于语法老旧,更新缓慢,很大程度上还是类似于Fortran77。尤其是近年来ANSYS公司对APDL的支持力度有所减小,最终似乎有完全消亡的趋势。但ANSYS存在用户庞大,资料众多,不仅通用资料较多,大部分行业也有十分细致的专业资料和专著。
ABAQUS/CAE的开发则基于Python语言开发,Python语言近年来十分流行,更新迭代很快,ABAQUS虽然使用了较为老旧的Python 2.7(已经于2020年1月1日停止支持),但相比APDL和 Fortran仍然具有诸多先进的特性。Python作为通用语言,除了用于有限元分析外,还可以方便的为ABAQUS引入诸多不可思议的新功能,如采用scipy实现多种算法下的结构优化,使用tkinter或者Qt制作GUI界面,甚至是在分析完成时通过邮箱和短信通知,都是十分方便的。这一点是APDL完全无法想象的。
二次开发的门槛相对还是比较高的,ABAQUS/CAE的二次开发虽然不像子程序那样要求非常深厚的数学和力学功底,但仍然需要充分理解相关的数据结构,很多的数据结构都是ABAQUS所特有的,比较难获得资料。
在学习初期,通过学习rpy文件,可以获得初级的开发能力,但rpy文件毕竟为GUI操作录制所得,很多脚本具有的独特优势无法体现,比如rpy文件中的所有选择都使用了掩码(MASK)来表示,掩码可读性很差,在编写自己的脚本时更是无从下手。因此不能从rpy文件中的获取的少量命令,通常就成了学习过程中的瓶颈。
比如我最初编制我的第一个脚本,就是前文提到的平板网架分析的脚本时,对顶点(v),参考点(rp),基准点(d)的区别就十分不解,在GUI中操作时,很少用到基准点,因此对如何画出所有的结点十分不解,耽搁了相当长的时间,最后在18年12月考完学术英语写作考试以后,顶着发烧在办公室里完成了所需的脚本。在定义边界条件时,无法理解掩码的编码方式,又不知道findAt等几何选择命令。
其实当时已经买了江丙云博士的《攻略》一书,但买书如山倒,看书如抽丝的本性又难以改正,对着rpy文件抱缺守残纠结许久,也没有找到响应的解决方法,最后经过长时间的折腾才学会了多种选择方法。包括集 合(Set)的处理,这些都是后来长时间的查阅《Abaqus Scripting Reference Guide》得到的。很多时候,编写脚本就是一边看rpy文件,一边看《Abaqus Scripting Reference Guide》,写写停停,修修补补逐渐成形。
在2019年3月从没有录过视频课的我开始产生录制ABAQUS/CAE二次开发课程的想法,一边学习一边准备相关资料。后来我在仿真秀官网陆续录制了SpaceClaim和ABAQUS优化的相关课程,但二次开发的课程又感到底气不足,诚惶诚恐,始终不敢开始。
后来,业界大师曹金凤老师在仿真秀官网发布了相关课程,不敢在曹老师面前班门弄斧,相关计划也一拖再拖。直到2020年2月初,因疫情待在家中,无事可干,才又重新开始了相关工作,一边编写教程,一边录制相关视频。最终形成了目前的《ABAQUS/CAE 二次开发基础与实战15讲》,
本课程为ABAQUS/CAE二次开发基础课程。大致分为三个部分:
Python基础知识和基本语法
ABAQUS/CAE 各模块的基本对象和使用方法
以下是我课程大纲
限时优惠:369元(原价:429 元 )
讲师提供vip群学习答疑和模型下载
课程永久保存,随时回放,提供发票
1、适合哪些人学习
有参数化分析需求的学生和工程师
希望自行开发分析工具的学生和工程师
掌握Python语言的基本概念和基本语法
掌握ABAQUS二次开发的基本方法和常见对象的使用方法
获得ABAQUS二次开发的实例
简单的ABAQUS GUI界面制作能力
3、讲师介绍
燕飞,6年的建筑/桥梁仿真分析经验,土木工程专业,博士在读,仿真秀科普作者
学习或工作经历:北京工业大学土木工程专业博士生,主要从事钢结构稳定,焊接结构疲劳与断裂,索结构与膜结构建筑分析与优化方面的研究。
案例:宁波某大跨度钢桁梁桥的全桥性能分析与优化,杆件稳定性研究,正交异性钢桥面板的疲劳性能研究。
录制课程本身也是一个学习的过程,在录制的过程中我自己也查阅了诸多资料,学到了很多新的方法,这些方法也第一时间加入到了课程之中。希望这些课程可以带给大家启发,抛砖引玉,引领大家进入ABAQUS/CAE二次开发的世界。