ANSYS的二次开发在封隔器仿真上的应用
2015-12-25方勇罗权贾宏伟易文君李万斌
方勇, 罗权, 贾宏伟, 易文君, 李万斌
(长江大学 机械工程学院,湖北 荆州434023)
0 引言
ANSYS软件为国际流行的大型通用有限元软件,由于其强大稳定的性能,经常在航空航天、汽车工业、生物医学、桥梁、建筑、电子产品、重型机械、微机电系统、运动器械等行业中用于分析各种大型工业问题,但是由于ANSYS的通用性使其对不同行业的专业性模块分析不具有针对性,复杂的英文界面和繁琐的分析步骤都给从事有限元分析的技术人员造成了很大的障碍[1]。因此利用ANSYS与其他CAD软件之间的接口,进行ANSYS的二次开发,实现数据的共享和交换,将成为解决现代工程学问题的有力工具。然而针对不同的开发环境,ANSYS的调用方法也各不相同[2],本文将介绍一种C#调用ANSYS的方法来避免重复建模的工作,并根据此方法开发一个封隔器参数化建模的程序,从而在解决工程问题时能够更方便、更快捷[3]。
1 ANSYS的二次开发技术
二次开发,简单地说就是在现有的软件上进行定制修改和功能的扩展,然后达到自己想要的功能,在ANSYS中也提供了二次开发的技术,它所集成的3个开发工具,即参数化程序设计语言(APDL)、用户界面设计语言(UIDL)和用户程序特性(UPFs)[4-5],使得用户在使用ANSYS软件时更为便利和高效。其中使用最多、最广泛的要数参数化程序设计语言(APDL)
参数化程序设计语言为一种解释性语言,可以通过简单地变动其中的设计参数来反复计算对照各类尺寸、加载大小的设计方案,极大地提高分析效率,降低分析成本。
2 C#调用ANSYS的具体实现方法
每运行一次ANSYS生成一段“*.log”文件,该文件记录了ANSYS运行过程中的每一个命令,以便在系统崩溃或用户发生重大错误时,用“/input”命令调入“*.log”文件重新执行命令,并且ANSYS为使用者提供了batch功能,可以实现“*.log”文件的后台调用,通过这一功能,可以利用自己熟悉的编程软件修改“*.log”文件中相应的参数,并调用 ANSYS 程序计算[1]。
在C#中调用ANSYS,采用的是新建进程的方式调用的,核心代码如下:
其中,“dlgOpen.FileName”表示ANSYS软件所在文件路径,“folder.SelectedPath”表示工作目录,“In.txt”表示软件生成的二次开发代码,“Out.out”表示ANSYS运行后生成的反馈信息。
在ANSYS软件后台运行时由于无法直接监控计算进程,我们采用监控ANSYS软件计算时自动生成的“file.err”文件来判断ANSYS软件是否已经求得结果。当ANSYS软件在进行计算时,该文件是不可操作的,当ANSYS软件计算完成,该文件即被释放,我们通过C#判断“file.err”文件是否被占用来判断ANSYS软件是否完成了计算。核心代码如下:
3 应用实例
根据本文提出的ANSYS调用方法,我们利用Visual Studio C#2008开发出一款软件系统,并内置了K344、Y341、Y341 逐 级 解 封 以 及Y344等几种常用封隔器。为了验证此方法的可行性,下面以Y344封隔器为例来说明C#与ANSYS的调用过程。在进行分析之前,用户需预先设定ANSYS启动路径和工作目录,启动路径即为调用ANSYS的入口,用户需在此项中找到ANSYS启动快捷方式“ANSYS.exe”的位置;工作目录即为计算结果保存的路径,由用户自由设定。然后在界面中输入封隔器的各项参数,如图1所示。本例中封隔器的计算参数主要包括:中心管内径50 mm,胶筒内径74 mm,胶筒外径114 mm,隔环高度15mm,上下胶筒长度85mm,中胶筒长度70mm,胶筒外斜角45°,胶筒斜面高度10mm,套管内径124.3mm,套管外径139.7 mm,上下胶筒邵氏硬度A80,中胶筒邵氏硬度A70,坐封力10 MPa。
在各项参数输入完毕后,点击“仿真”按钮,系统会自动建立封隔器模型并划分网格,并从后台调用ANSYS进行计算,同时会把计算结果保存到工作目录中,用户可以根据自己的需要选择各级菜单查看计算结果,如图2~图5所示。
图1 参数设置
图2 轴向位移
图3 等效应力
图4接触应力云图
图5接触应力曲线
4 结 语
本文探讨了基于C#框架下对ANSYS的调用问题,通过采用参数化建模和后台调用ANSYS进程两项技术,开发出一款软件系统,该系统提供了友好的界面和简单的操作,同时,利用此系统可以对K344、Y341、Y341逐级解封,以及对Y344等几种常用封隔器进行计算,从而避免了反复建模,使其高效计算。另外,C#在生成ANSYS计算命令流的过程中采用的是动态生成方式,并将所有计算参数进行了关联的同时校验了参数的有效性,避免生成的ANSYS命令流在ANSYS软件后台运行时发生错误,为开发者提供了一种新思路。
[1] 吴鹏,曾红,韩迈.基于ANSYS的二次开发技术的实现方法[J].辽宁工学院学报,2004,24(5):23-29.
[2] 彭公孚,席长友.基于VB控件开发的ANSYS程序调用方法[J].武汉理工大学学报:交通科学与工程版,2004(1):148-150.
[3] 张晓丽,李德建,李明鹏.ANSYS软件二次开发技术的应用[J].重庆工业学院学报,2007,21(1):11-14.
[4] 骆鸣.浅谈VB在ANSYS二次开发中的应用[J].天津职业院校联合学报,2006(5):53-56.
[5] Lun Guande,Liu Yancong,Yi Peng,et al.Lifting Submarine Pipeline Analysis Based on Secondary Development of ANSYS[C]//2012 International Conference on Convergence Information Technology Lecture Notes in Information Technology,Vol.19.USA:Information Engineering Research Institute,2012:205-211.