仇舒凡 魏艳红 摘要: 对焊接温度场的计算模拟进行了研究,开发了一个具有友好的人机交互界面以及良好的计算能力的应用软件程序。通过对焊接温度场有限元模型的求解研究,自行编制Fortran程序实现了不同接头形式的模型建立以及节点温度的求解。采用C+ +/MFC实现了具有菜单区、對话区和图形区的操作界面的搭建,并通过动态链接库(DLL)的方法实现了两种程序的混合编程。结果表明,该系统软件具有智能化和流程化的有限元建模功能,用户在操作界面根据提示输入构件相关参数即可完成焊接接头温度场模型的建立及计算,并可以根据需求查看温度结果。对比该系统软件和商业有限元软件的计算结果,验证了程序的可行性。 关键词: 焊接温度场;有限元模拟;混合编程;交互界面 中图分类号: TG 409 Numerical simulation method of welding temperature field and its software program design Qiu Shufan, Wei Yanhong (College of Material Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing 211106, China) Abstract: In this paper, the numerical simulationmethod of welding temperature field was studied. An application software program with friendly interactive interface and good calculation ability was developed. Based on the research about the solving method of the finite element model of the welding temperature field, the seld-designed Fortran program was developed to realize the modeling and solving of different types of joints. C+ +/MFC was used to build the operation interface with menu area, dialog area and graphic area, and the method of dynamic link library (DLL) was used to realize the mixed programming of the two programs. The results showed that the software had the ability to build finite element model intelligently. The users could build the temperature field model by entering the relevant parameters of the welded joint according to the prompts on the interface. The calculation results of this program were compared with those of one commercial finite element software, which verified the feasibility of this program. Key words: welding temperature field; finite element simulation; mixed programming; interactive interface 0 前言 焊接温度场的有限元计算在焊接结构质量分析方面得到越来越广泛的应用。从20世纪60年代开始,国内外学者对各种维度的有限元模型进行研究 [1-2]。A. A. Reddy等人 [ 3]开发了可计算直流钨极氩弧焊温度场分布的三维瞬态非线性有限元程序,并验证了计算热循环曲线和焊缝尺寸的正确性。汪建华等人 [ 4]对三维非线性瞬态焊接温度场进行了有限元计算,并提出了提高计算精度的几个方法。目前三维瞬态热传导模型可以较为准确地描述焊接温度场的变化过程。 现在市面上已有许多国外的商业软件可以实现温度场的计算,如MSC.MARC,ANSYS,ABAQUS,SYSWELD等,具有强大的分析功能,可适用于各领域的模拟计算,但其价格昂贵,且操作复杂,对用户的要求较高。国内的梁陈剑 [5]建立了远程焊接数值模拟系统,可实现典型接头智能化二维有限元建模。高嘉爽等人 [6]开发系统将复杂的前处理替换为逼真的虚拟世界操作,可以更好地确定焊接顺序。大多数研究以已有的有限元软件为基础,对其进行二次开发,使其适用于实际问题。国内还很少有应用广泛的、具有自主知识产权的有限元软件,因此,有限元软件的自主开发是中国在焊接模拟领域研究发展的必然趋势。对焊接过程核心求解程序的研究,以及对软件界面实现程序的研究,具有十分重要的应用价值。 Fortran语言在科学计算方面具有优势,是应用广泛的数值计算编程语言,标准化程度高,有着高精度的数据结构和运算结构,且易与其它编程语言交互 [7]。采用Fortran语言实现温度场有限元模型的建立和求解计算,但Fortran语言是面向过程的,在实现人机交互方面不如面向对象的语言方便。 C+ +具有较强的图形处理功能,是Windows系统上常用的图形界面程序开发平台之一。借助于微软基础类库(MFC)在Visual C+ +环境下开发Windows程序,它封装了Windows API(应用程序编程接口)的数据结构和功能,还提供了一个应用程序框架,大大提高了软件开發效率 [8]。将Fortran与C+ +程序进行混合编程,从而充分发挥两种语言的优势,开发出具有良好的计算能力和友好的人机交互界面的应用程序。 文中介绍了采用Fortran和C+ +程序的混合编程,该程序采用Fortran语言实现焊接温度场有限元模型的建立以及求解计算,基于C+ +/MFC开发人机交互界面,实现流程化建模。 1 温度场计算Fortran程序设计 1.1 温度场有限元方程 1.1 温度场有限元方程 采用目前应用广泛的三维非线性瞬态热传导模型描述焊接接头温度场,其导热微分方程 [4]如式(1)所示。 ρc T t = x kx T x + y ky T y + z kz T z +Q (1) 式中:T为与坐标x,y,z及时间t相关的温度场函数;ρ为密度;c为比热容;kx,ky,kz分别为沿着x,y,z轴的热导率;Q为内部热源强度。对方程进行简化,在焊接过程中不存在内部热源,因此Q=0,假设焊接材料是各向同性的,则有kx,ky,kz是相等的。求解导热微分方程需要考虑边界条件,即焊接时的初始条件和边界条件,可将方程写成式(2)的刚度矩阵和外载荷的形式 [4]。 C t T+KT=P (2) 式中:C为热容矩阵,和材料热物理性能参数有关;t为时间;T为温度矩阵;K为热传导矩阵;P为温度载荷矩阵。 对空间和时间进行离散后采用有限元法中常用的伽辽金法对该微分方程进行化简,将非线性微分方程组化成非线性代数方程组,最后采用高斯消去法进行求解。 1.2 程序流程设计 有限元法用统一的观点对节点列出计算格式,并以矩阵的形式保存,有利于采用计算机进行求解。采用Fortran程序实现计算的流程,如图1所示。 在输入几何模型参数时,首先定义一个变量MeshType,用以区分焊接模型的接头形式,若MeshType=1,则为平板对接接头,焊接的两块板材关于焊接对称,为减小计算量,采用建立1/2模型的方法进行模拟计算;若MeshType=3,则为T形接头,建立完整的接头模型。 而后对几何模型进行单元划分和节点编号,将每个单元的8个节点编号和6个面编号分别存入相应数组供后续使用。 在焊接过程中初始条件一般为焊接件的初始温度,即为室温。在焊接过程中热量以不同的方式传递, 在单元相接触的面之间为热传导,而在单元边界表面 和环境之间则为对流换热。因此需要判断每个单元的6个面是否为构件表面,若是边界表面,则为其加载边界条件,即环境温度和换热系数。在焊接模拟时,最重要的是选择合适的热源模型模拟焊接过程的热作用,该程序提供了高斯表面热源和双椭球体热源模型,可选择合适的热源模型并输入相应的模型参数。 数据读入完成,则将初始条件、边界条件、材料参数、热源加载到相应的单元节点上,即为每个单元定义信息,并建立单元刚度矩阵,然后将其组装成总体刚度矩阵并求解,就可以得到在每个计算时间步下每个节点的温度。 2 C+ +界面程序设计 程序界面分为3个区域:菜单区、对话区和图形区,如图2所示。菜单区是各个模块的功能入口,包含整个接头温度场模拟的流程,用户可依次点击菜单项,进入相应流程的对话框。对话区则用于显示与菜单项相关的对话框,用户在此区域输入模型相关的参数。图形区可显示三维模型。 在菜单区采用树形控件(tree control)实现有限元建模流程的建立,根据如下步骤创建树形控件:①首先创建一个CTreeCtrl类的成员变量m_TreeCtrl,将其与树形控件资源相关联;②然后为树形控件的每一个分支节点创建一个HTREEITEM类型的句柄,便于对该控件进行访问和操作;③最后在OnInitialUpdate函数中对树形控件进行初始化,首先调用SetImageList函数设置图标序列,再调用InsertItem函数,传入图标序列的索引,为树形控件的分支节点添加图标,同时为其添加标题。最终建立如图3所示的树状流程。 用户使用该系统软件时,程序将通过OnTvnSelchangedTree函数响应鼠标单击消息,并定义一个变量nView存储用户选择的分支节点信息,该变量传入对话区控制程序,根据nView的值即可显示相应的对话框,从而进行模型参数的输入操作。 输入参数后单击确定按钮,参数将按照一定的格式存至".txt"文件中,供Fortran求解程序调用。图4为输入网格划分参数的对话框,首先选择接头形式,若为T形接头,则在下方输入框中输入构件一和构件二的参数,即在x,y,z各方向的节点数以及网格单元的长度;若为对接接头,则只需要输入构件一的参数即可。 根据流程依次完成各分支的参数输入,并在焊接工况对话框下完成焊接时间等的设置,确定参数输入完毕,则单击"计算"按钮即可调用Fortran程序进行有限元计算。在计算结果中可将程序计算得到的节点温度进行可视化显示,查看其温度场云图分布结果。 3 Fortran与C+ +程序的混合编程 3.1 关于混合编程 Fortran和C+ +程序的混合编程有多种方法:源码、可执行文件EXE、动态链接库(dynamic link library, DLL)、COM组件。文中采用动态链接库DLL的方法实现混合编程。动态链接库DLL是一种基于Windows的编程规范,只要遵守DLL的规范和策略,有正确调用接口,不管是采用何种编程语言或编译器编制的DLL都有通用性。 Fortran和C+ +程序在例程命名、参数传递等方面的规则,即为调用约定,是不相同的,因此在要实现两者的混合编译,需要协调两种语言的调用约定。Fortran程序的调用约定有缺省约定、C,STDCALL;C+ +程序的调用约定有_cdecl,_stdcall。两者可匹配的调用约定,如表1所示 [ 9]。 3.2 生成DLL文件 将焊接温度场Fortran求解程序改编成DLL文件,首先由于DLL中不存在主程序,需要将Fortran程序中的主程序改为子程序,即将PROGRAM WTEMP改写为SUBROUTINE WTEMP(),括号中为参数项; 其次,对于在Fortran程序中需要读入的数据,可以通过C+ +程序中的变量或者数组将用户输入的参数传入Fortran程序中进行计算,也可以采用从文件读入数据的方法。由于焊接温度场计算过程中涉及构件尺寸、材料参数、热源参数等数据,且涉及到实型、整型、数组等数据类型,若采用参数传递的方式,则需要对Fortran程序相应的语句进行修改,容易出现错误。因此,Fortran和C+ +程序的数据读入和输出都采用打开文件读取和写入的方式,以实现数据的传递。 Fortran语言不区分大小写,但DLL函数入口点对字符大小写要求严格,在生成DLL时,例程名将被转换成全部大写或小写。Fortran程序的调用约定选用C约定 [ 10-11]。 Fortran程序中参数传递有引用参数传递和值参数传递两种方式,分别传递参数地址和参数值。文中Fortran程序选用了C约定,则参数传递应为值传递。在程序外部例程中添加如下声明: !DEC$ ATTRIBUTES DLLEXPORT :: WTEMP !DEC$ ATTRIBUTES C, ALIAS: Wtemp :: WTEMP !DEC$ ATTRIBUTES VALUE :: temp 首行为导出声明,第二行表示调用约定为C约定,第三行表示规定参数temp为值传递。 3.3 调用DLL文件 首先在C+ +界面程序最开始声明与Fortran程序匹配的调用约定: typedef void(_cdecl * WTEMP)(int temp); 然后在求解按钮对应的程序处调用Fortran程序生成的DLL文件,文中采用显式调用的方法,代码如下所示。 HMODULE hDLL; hDLL=::LoadLibrary(_T("Wtemp.dll")); if(! hDLL) {AfxMessageBox(_T("调用DLL失败")); FreeLibrary(hDLL); return;} WTEMP Wtemp=(WTEMP)GetProcAddress (hDLL, "Wtemp"); if (! Wtemp) {AfxMessageBox(_T("找不到函数文件")); FreeLibrary(hDLL); return;} Wtemp(temp); FreeLibrary(hDLL); 通过LoadLibrary函数装载DLL,再通过GetProcAddress函数获得Fortran函数的地址,即可调用该函数,最后通过FreeLibrary函数释放DLL。这样通过单击求解按钮,即可实现调用Fortran程序根据用户在界面输入的参数建立模型并求解。 4 实例 采用钨极氩弧焊对TA15钛合金对接接头进行焊接,并采用此程序对其进行温度场计算。焊接构件为100 mm×50 mm×2 mm的钛合金板材, 在程序界面输入参数将其几何模型划分为1.25 mm×1.25 mm×1 mm的六面体单元。依次单击树状分支完成模型的建立,TA15材料参数在材料库中选择已有材料牌号,如图5所示。在图6的焊接工艺库中选择电弧电压、焊接电 流等参数,选择双椭球热源模型对钨极氩弧焊的热作用进行模拟,输入熱源模型参数即可,如图7所示。全部设置完成后单击计算按钮进行计算。 在同一台计算机中进行计算,就求解时间而言,采用该系统的计算时间为360 s,而采用某商业有限元软件的计算时间为550 s,可见该系统在计算效率上有一定的优势。 图8a和图8b分别为经此程序和商业有限元软件模拟计算以及后处理得到的同一时刻的温度场云图。可以看到,两者计算得到的峰值温度基本一致,但程序计算得到的云图各温度的边界不够清晰,因此绘制等温线表示温度分布。图9为构件上表面的温度分布,两者的温度场形状皆为拖尾的半椭圆状,验证了此程序计算结果的准确性。 5 结论 (1)采用Fortran语言编制程序实现了不同接头形式的有限元模型的建立和求解,可求得每个时间步下所有节点的温度。 (2)基于C+ +/MFC在图形处理方面的优势,建立了具有菜单区、对话区和图形区的操作界面。界面包含了有限元建模的流程,用户根据界面提示依次输入模型参数,即可实现模型的建立。 (3)采用动态链接库的方法实现Fortran求解程序和C+ +界面程序混合编程,充分发挥了两种语言的不同优势,形成了一个具有良好的计算能力和友好的操作界面的软件程序。 (4)采用该系统和某商业有限元软件对实例进行计算,发现该系统的求解时间更短;对比两者的计算结果,验证了此程序计算结果的准确性。 [HT5H]参考文献 [1] Wilson E L, Nickell R E. Application of the finite element method to heat conduction analysis[J]. Nuclear Engineering & Design, 1966, 4(3):276-286. [2] Bag S, De A. Development of a three-dimensional heat-transfer model for the gas tungsten arc welding process using the finite element method coupled with a genetic algorithm-based identification of uncertain input parameters[J]. Metallurgical & Materials Transactions A, 2008, 39(11):2698-2710. [3] Reddy A A, Guha B, Achar D R G. Finite element modeling of three-dimensional transient heat transfer in stainless steel (304) pulsed gta weldments [J]. Numerical Heat Transfer, Part A: Applications, 2002, 41(1):41-64. [4] 汪建华, 戚新海, 钟小敏. 三维瞬态焊接温度场的有限元模拟[J]. 上海交通大学学报, 1996, 30(3):120-125. [5] 梁陈剑. 远程焊接数值模拟系统的研究[D]. 北京:清华大学, 2002. [6] 高嘉爽, 杨建国, 方洪渊, 等.基于VRML的焊接有限元分析前处理开发[J]. 焊接学报, 2008, 29(4): 93-96. [7] 韩英杰. 实现VC+ +和FORTRAN混合编程的几个技术[J]. 安徽电气工程职业技术学院学报, 2005, 10(1): 66-69. [8] 王琦. 基于VC与Fortran混合编程的超大型冷卻塔热力计算软件编程[J]. 河南科技, 2015(1): 31-33. [9] 陈江宁, 王和平. Fortran与VC+ +混合编程研究及其应用[J]. 微计算机应用, 2007, 28(6): 644-647. [10] 赵震宇, 王喜臣. C/C+ +与FORTRAN混合编程技术及其应用研究[J]. 吉林大学学报, 2001, 31(2):197-200. [11] 周谧. C/C+ +与FORTRAN混合编程技术及其应用研究[J]. 科技创新与应用, 2015(13): 76. 收稿日期: 2019-09-19 仇舒凡简介: 1995年出生,硕士研究生;主要从事焊接过程数值模拟与仿真研究;qsf18851875891@163.com。