微观组织模拟:模拟步骤Deform 3D二次开发步骤为了在金属成形工艺模拟过程中进行微观组织演化的定量预测,所使用的模拟软件必须有包含微观组织变化的本构模型和专门的微观组织演化分析模块。
当前国际上虽然有多个知名商业软件流行,但是它们都不具备微观组织演化的预测功能。
庆幸的是多数商业软件都为二次开发设置了用户子程序功能,通过用户子程序,用户就能根据自己的需要增加自己的微观组织预测功能。
为了使DEFORM3D软件具有微观组织演化预测功能,本研究尝试将包含动态再结晶的热刚—粘塑性材料本构模型植入到DEFORM3D中,并在模拟结果中能够显示晶粒度等用户变量在变形体内的分布。
在研究出具体开发步骤前,必须要对Defom中的程序有所深入了解。
一、DEFORM3D二次开发基础理论1、用户子程序结构本研究的DEFORM3D二次开发涉及到的子程序有:USRMSH、USRMTR、UFLOW、USRUPD(含USR和CHAZHI)。
(1)可以改变几乎所有变量的子程序(USRMSH)子程序功能:该子程序包含了有限元计算中所有的全局变量,通过这个用户子程序,可以修改所有这些变量。
但这些全局变量的改变将直接影响有限元的计算,处理不当就会使整个程序不能正常进行。
在DEFORM3D子程序功能中,所有的用户变量必须在USRUPD子程序中定义。
本文的用户子程序中共定义了18个用户单元变量。
各用户变量的含义如列表所示。
该子程序用于某些必要数据的获取和存储流程图如下图所示:(2)流动应力子程序(USRMTR、UFLOW)SUBROUTINE USRMTR(NPTRTN,YS,YPS,FIP,TEPS,EFEPS,TEMP)SUBROUTINE UFLOW(YS,YPS,FIP,TEPS,EFEPS,TEMP)子程序的变量含义:NPTRTN:应力模型编号;YS:流动应力;YPS:流动应力对等效应变的导数;FIP:流动应力对等效应变速率的导数;TEPS:等效应变;EFEPS:等效应变;TEMP:温度。
子程序USRMTR和UFLOW运行时需要输入:应力模型编号、等效应变、等效应变速率、温度。
子程序执行完后将输出:流动应力值、流动应力对等效应变的导数,流动应力对等效应变速率的导数。
这几个变量可以用用户定义变量来计算。
子程序功能:USRMTR:传入上级程序计算出的等效应变、等效应变率、温度和用户应力模型编号,调用具有该编号的UFLOW,将等效应变、等效应变率、温度值传入UFLOW,用于计算出的流动应力、流动应力对等效应变的导数和流动应力对等效应变率的导数传回上级程序。
UFLOW:用传入的等效应变、等效应变率、温度和公共块中的用户定义的单元变量(USRE1、USRE2)和节点变量(USRN1、USRN2)计算流动应力、流动应力对等效应变的导数和流动应力对等效应变率的导数,并将这些计算值返回USRMTR。
(3)用户定义节点和单元变量(USRUPD)子程序格式:SUBROUTINE USRUPD子程序功能:计算所有的用户单元变量和用户节点变量。
在应力模型中可以使用这个子程序中定义的变量。
(4)USR子程序该子程序被USRUPD调用,它是计算材料本构模型的主体程序,具体功能是:计算流动应力、再结晶体积分数、平均晶粒度、未再结晶晶粒度、再结晶晶粒度、晶粒度差等与本构模型相关的用户自定义单元变量,并将这些变量值传到USRUPD子程序中。
该子程序的计算需要用到存储在IUSRVL数组中的热刚-粘塑性本构模型中的所有参数。
子程序中读取语句如下:READ(IUSRVL (4),*)RM1,RK1,GAMA,RMD,ROU0,ROU1,ROU2 READ(IUSRVL (5),*)RLID,RM,BEITA,A,RM2,RK2(5)CHAZHI子程序变形体网格重划后,存储在用户构造的数据文件中的建立在网格重划前单元上的变量数据必须通过插值方法转换到网格重划以后的新单元之上,不然有限元计算将不能正确进行。
因此,网格重划必须进行必要的数据转换。
为进行插值计算,需要存储网格重划前、后的单元节点信息,包括:网格重划前的单元总数、节点总数、每一时间步的节点坐标、单元节点号;网格重划后的单元总数、节点总数、节点坐标、单元节点号。
CHAZHI子程序的流程图如下图所示。
CHAZHI子程序流程图2、用户定义子程序的核心代码用户定义子程序的核心代码都储存在DEF_USR.FOR中,有限元主程序通过调用该文件中的子程序,可以计算出用户自定义变量的值。
所以关键问题在于该子程序的编写。
DEF_USR.FOR文件中的子程序有USRMSH、USRUPD 和UFLOW三个用户子程序。
下图为DEF_USR.FOR文件中子程序之间的先后调用顺序关系。
3、动态再结晶过程分析子程序的编制该子程序是在有限元模拟程序中用于计算流动应力和平均晶粒度等单元变量的,它在有限元模拟程序中的位置如流程图中加粗字体所示。
该子程序在有限元计算中的位置本研究的一个重要内容就是将公式所组成的“热刚—粘塑性本构模型”以用户子程序的方式加入到DEFORM3D中,并将该模型中的一些变量(如再结晶体积分数等)定义成用户自定义单元变量,以便从DEFORM3D的后处理中可以查看这些变量在变形体内的分布情况。
具体开发步骤如下所述。
二、开发步骤1、开发运行环境安装用虚拟光驱加载Absoft8.0.iso文件,安装Absoft 8.0编译器,安装界面如图1~图2所示。
图1 安装界面一,点击【Install Products】图2 安装界面二,顺次安装每个条目,【IMSL Libraries】可以略过。
2、安装Deform3D V6、植入子程序(1)安装Deform3D V6软件(2)植入子程序:打开Deform3D V6安装目录,如“D:\DEFORM3D”,进入子目录“V6_1\UserRoutine\DEF_SIM”中。
此时可见文件如图3所示。
图3双击打开文件“DEF_SIM_USR_Absoft75.gui”,如图4所示。
图4 DEF_SIM_USR_Absoft75在此处,我们用到的文件为:usr_mtr.f、usr_upd.f、usr_msh.f。
源文件中的各个函数在工程中文件分布情况如表1所示。
将“源代码.pdf”中的代码拷贝到对应的文件中,并保存。
点击工具栏中的图标进行编译,在同一目录中生成“DEF_SIM.exe”。
将“DEF_SIM.exe”拷贝到Deform安装目录下的“V6_1”目录下,如“D:\DEFORM3D\V6_1”,此时提示该文件已经存在,覆盖即可。
当然,最好在覆盖之前,先将原有的“DEF_SIM.exe”备份一下。
经验显示:应将原“DEF_SIM.exe”文件剪切走,然后将新生成“DEF_SIM.exe”文件拷入。
此时就已经完成了准备工作,下面开始用Deform来调用自定义的模型来进行仿真模拟。
具体步骤如下:3、二次开发嵌入子程序后的仿真流程(1)新建问题打开Deform-3D,点击左上角,新建问题。
点击两次【next】,出现问题名称,如图5所示,为新建问题对话框,在新建问题名称处根据个人意愿输入,例如:输入“A”。
点击【Finish】,进入前处理环境。
图5 新建问题对话框(2)模拟控制输入选择菜单【Input】中的【Simulation Controls】,在【Main】栏更改单位制为SI,如图6所示为模拟控制输入对话框。
点击【OK】按钮。
图6模拟控制输入对话框(3)添加坯料在右边数结构中选中【[PDie] Workpiece】,并在中选择【Import Geo…】,选择Deform安装目录下“\V6_1\LABS\”中的Block_Billet.STL。
点击,划分网格,点击【Generate Mesh】生成网格。
(4)添加上模点击,添加模型,并在中选择【Import Geo…】,选择Deform安装目录下“\V6_1\LABS\”中的Block_TopDie.STL。
在中的【Constant Value】定义运行速度,如图7所示。
图7(5)添加下模点击,添加模型,并在中选择【Import Geo…】,选择Deform 安装目录下“\V6_1\LABS\”中的Block_BottomDie.STL。
(6)定义材料(关键点——应力应变本构方程)选择菜单【Input】中的【Material】,选择【load from lab】,选择合适的材料。
然后在【Plastic】中的【Flow Stress】下拉菜单中选择“User routine”.如图8所示。
图8点击,选择流动应力子函数,这里将与定义的UFLOW1、UFLOW2…对应起来,如:选择填写数字“1”,表示对应UFLOW1。
点击【Close】。
在右边数结构中选中【[PDie] Workpiece】,在【General】中的【Material】中点击,选择刚才定义的材料。
(7)定义单元数据打开【Advanced】中的Element Data,出现对话框,选择“User”,对话框中可以定义“Variable Name”和对应的“Value”。
如图9所示。
在此定义并输入18个用户单元变量和相应的初始值。
图9(8)定义步骤打开菜单【Input】中的【Simulation Controls】,选择【Step】,设置步骤信息如图10所示。
(9)定义接触打开菜单【Input】中的【inter-object】,弹出图11对话框,点击Yes。
弹出对话框图12。
图11图 12选中条目1,点击【Edit】,设置摩擦系数为0.12,如图13所示。
点击【Close】,再点击【Generate】生成接触面。
用同样方法设置另一个接触面。
(10)定义“用户自定义变量”打开菜单【Input】中的【Simulation Controls】,选择【Advanced】中的【User Defined】,输入编号为1-6的用户变量。
其具体意义如表2所示。
这部分用户自定义变量涉及到具体材料的相关参数。
注:表中数据为26CrZNi4MoV材料的相关值,在此作为范例。
(11)生成数据库点击,弹出窗口,然后点击【Check】,检查无误,点击【Generate】生成数据库。
打开菜单【File】中的【Save as】,另存为 A.KEY,生成供程序调用的文件。
(12)仿真退出前处理环境,点击【Run】开始仿真。
(13)后处理通过后处理,可以获得:在不同变形条件下,再结晶体积分数、平均晶粒度、未再结晶晶粒度、再结晶晶粒度、等效应变、等效应力、等效应变速率、最大晶粒度差等变量分布的数值模拟结果。
这些后处理的结果,与图9的输入变量有对应关系,可以在后处理对话框中找到对应的图谱。