DEFORM子程序初探

本文首发于公众号:工科小学生

DEFORM本身已经很强大了,但实际工程问题复杂多变,DEFORM自有的求解方法无法面面俱到,因此软件提供了子程序接口,用户可以通过子程序二次开发以达到自己的求解目的。DEFORM子程序二次开发包括求解器和后处理的二次开发

求解器的二次开发包括自定义流动应力应变模型,自定义运动控制,自定义损伤模型,节点值和单元值的计算以及其他特定的需要。而后处理的二次开发则是用户利用储存在DB文件中的计算结果来计算场变量。

这二者的开发语言均为FORTRAN,并且是老式的FORTRAN 77。DEFORM指定的集成开发环境是Absoft Fortran 9或者Absoft Fortran 11。其中,编译64位程序只能通过后者编译。

下面话不多说,先来展示一下怎么使用Absoft Fortran 9进行二次开发(因为只有Absoft Fortran 9软件)。

首先,在DEFORM安装目录下找到UserRoutine(例:D:\Program Files\SFTC\DEFORM\v11.0\3D\UserRoutine),2D与3D文件夹下各有一个UserRoutine,这里以3D为例。在文件夹下可以看到三个子文件夹,其中DEF_SIM就是求解器的开发项目文件夹,另两个分别是后处理以及元胞自动机的二次开发项目文件夹。

DEFORM子程序初探的图1

接着进入DEF_SIM文件夹中,蓝框就是Absoft Fortran 9的项目文件,绿框和蓝框分别是Absoft Fortran 11的32位和64位项目文件。


DEFORM子程序初探的图2

用Absoft 9打开DEF_SIM_USR_Absoftv90.gui。打开之后,窗口中罗列出了所有二次开发用到的文件。本次以修改本构模型为一个小例子,双击usr_mtr.f

DEFORM子程序初探的图3

打开之后可以看到整个代码有10个UFLOW子程序和一个USRMTR子程序组成,USRMTR不用管,它主要起一个调用其它UFLOW子程序的作用。我们需要修改的是UFLOW子程序,DEFORM支持100个UFLOW子程序,不过一般我们只用到UFLOW一个子程序。UFLOW后面的数字要记住,后面要用到,先来看UFLOW1子程序,里面已经有一个例子了,这个例子很简单。就红框中的一段,具体每个变量代表什么意思,可以看一下上面注释,学过英语的应该都懂吧,没错,哪些密密麻麻的C开头的就是FORTRAN 77的注释。

DEFORM子程序初探的图4

好,假设我们已经写好了UFLOW1子程序,保存一下,记住我们修改的是UFLOW1。关闭编辑窗口,回到上一个窗口,点击窗口上面的小锤子,进行编译和链接,出现Build completed的提示后,会在UserRoutine文件夹下生成一个DEF_SIM.exe文件,把这个文件拷贝到D:\Program Files\SFTC\DEFORM\v11.0\3D目录下,替换原有的DEF_SIM.exe。注意,在拷贝替换前记得把原来的文件备份一下。至此,开发阶段就完成了。

DEFORM子程序初探的图5

下面进行正常的模拟计算,计算的时候需要修改一个地方,就是在材料里面把Flow stress改成User routine,然后点击右边的笔,输入1,就是刚刚我们修改的UFLOW1后面的数字1,其它正常设置即可。

DEFORM子程序初探的图6

然后我简单做了一个压缩的计算进行对比,先来看等效应力

   模型结果

DEFORM子程序初探的图7

 

User routine结果

DEFORM子程序初探的图8


看云图好像没差,不过看右边的颜色条表示的值,二者的差别将近50倍。


以上就是本构模型二次开发的一个完整过程了,这算一个简单的例子,复杂一些的就涉及到编写多个代码文件了,而且最重要的是二次开发前要建立可靠的物理模型和数学模型。个人认为,二次开发的难点也在于此。

(8条)
默认 最新
学习了
评论 点赞 1
👍🏻
评论 点赞 1

查看更多评论 >

点赞 9 评论 9 收藏 16
关注