导读:第一次接触ABAQUS软件是年的时候,那时候刚开始做研究生课题,在导师的指导下将研究生课题定为了一个与ABAQUS软件二次开发相关的内容。说实话,那时候完全不懂ABAQUS软件是什么,甚至之前都没听过,更别说子程序二次开发。没办法,既然课题都定了这个方向,硬着头皮也得往前去,好在当时课题组还有师兄师姐会一些,在他们的帮助下从安装软件、安装帮助文档,总算是开始了我学习ABAQUS软件的第一步。
从年到现在,已经7年有余,中间学习的过程中走了很多弯路,也攒下了不少经验。下面我就将简要的给出一些我个人学习的经验,希望能够对各位学习ABAQUS软件二次开发的同仁能够起到一定的帮助。
一、根据帮助文档学习子程序整体
帮助文档是学习ABAQUS软件最好的资料,对于子程序二次开发也是一样。首先需要根据帮助文档了解ABAQUS软件中总共有哪些子程序,每一个子程序其功能与作用分别是什么,只有对整个子程序情况有了了解以后,在实际的工作或者科研过程中才能知道应该如何去借助于子程序实现一些复杂的加载或者作用。
图1ABAQUS软件帮助文档首页
图1中红色圈出来的便是子程序相关的内容,其中从ABAQUSusersubroutinesreferenceguide进去便能够清晰的看到各种子程序的分类,如图2所示。分别根据左侧的索引进去便能查看包括隐式、显示、CFD模块对应的子程序分布,并根据每一个子程序的介绍可以大致知道各自对应的作用与功能。
UtilityRoutines主要为一些工具子程序,所谓工具子程序是指在上述的大的子程序中可能可以直接调用的子程序,以扩充其功能和实用性的作用,例如在编写UMAT中经常需要写出主应力、主应变、偏应力张亮、应力不变量等,这些在工具子程序中都有涉及,可以直接使用。这里涉及的内容比较多,我将在即将开设的微课直播中做更详细的介绍。
图2子程序的分类检索示意
ABAQUSverification模块主要放了一些子程序验证、子程序实例的源文件和子程序,利用好里面的资源便可以非常便捷的创作一些类似的子程序,同时认真查阅和学习里面的内容,也可以有助于快速了解和掌握相关子程序的应用。这些内容我将在微课中向各位同学展示如何利用好ABAQUS软件已有的子程序为我所用。
二、自学FORTRAN编程的基本知识
工欲善其事,必先利其器。了解了子程序的分类及其作用,到了实际自己编写的时候,必然得掌握基本的FORTRAN编程知识才行。FORTRAN编程语言相对简单,对于我们二次开发,其实涉及的语法内容也并不高深,更多只需要掌握基本知识即可。例如定义变量、定义数组、续行符、定义子程序、定义函数、定义公共变量、运算法则、逻辑预算、循环、判断等。建议各位同学自行在市面上买一本FORTRAN基础知识的书籍即可。
我推荐的是彭国伦老师的《Fortran95程序设计》。
图3彭国伦老师的《Fortran95程序设计》
三、勤学多思考,学会融会贯通
前面介绍的更多是基础内容,要想利用好子程序,一定得多思考,多加入一些自己的理解和判断。我举一个简单例子,很多同学可能都知道UEXPAN这个子程序,它是用于模拟物体热膨胀作用的子程序,当遇到热膨胀系数比较复杂的时候便考虑使用这个子程序。但是大家如果只是把对于该子程序的理解停留在这个程度,那就着实没将它的作用发挥到极致。
UEXPAN是提供了一个弹性应变以外的额外应变接口,我们完全可以用来模拟诸如混凝土的徐变、随着时间变化的生长应变、核反应堆领域中材料的辐照肿胀与辐照生长等等。因此很多时候我们要学会去思考其原理,进而融会贯通。
图4UEXPAN子程序介绍
曾经我便利用UEXPAN子程序实现了对SiC包壳材料辐照肿胀的模拟,SiC管子在辐照后会发生肿胀(体积膨胀),其体积膨胀变形表达式为-2.4×10-5T+0.,子程序内容如图5所示。
图5SiC包壳辐照肿胀子程序相关内容
(a)S11应力云图
(b)S22应力云图
(c)S33应力云图
图6SiC包壳辐照肿胀后的应力分布结果
四、写在最后
ABAQUS子程序二次开发涉及的内容很多,还包括诸如子程序中的语法错误应该如何快速识别、USDFLD子程序—ABAQUS子程序二次开发利刃、状态变量的美妙之处、如何实现不同子程序之间的数据传递和交互等等,在这里难以一一阐述。
前不久,笔者在仿真秀