方勇, 羅權(quán), 賈宏偉, 易文君, 李萬(wàn)斌
(長(zhǎng)江大學(xué) 機(jī)械工程學(xué)院,湖北 荊州434023)
ANSYS軟件為國(guó)際流行的大型通用有限元軟件,由于其強(qiáng)大穩(wěn)定的性能,經(jīng)常在航空航天、汽車工業(yè)、生物醫(yī)學(xué)、橋梁、建筑、電子產(chǎn)品、重型機(jī)械、微機(jī)電系統(tǒng)、運(yùn)動(dòng)器械等行業(yè)中用于分析各種大型工業(yè)問(wèn)題,但是由于ANSYS的通用性使其對(duì)不同行業(yè)的專業(yè)性模塊分析不具有針對(duì)性,復(fù)雜的英文界面和繁瑣的分析步驟都給從事有限元分析的技術(shù)人員造成了很大的障礙[1]。因此利用ANSYS與其他CAD軟件之間的接口,進(jìn)行ANSYS的二次開(kāi)發(fā),實(shí)現(xiàn)數(shù)據(jù)的共享和交換,將成為解決現(xiàn)代工程學(xué)問(wèn)題的有力工具。然而針對(duì)不同的開(kāi)發(fā)環(huán)境,ANSYS的調(diào)用方法也各不相同[2],本文將介紹一種C#調(diào)用ANSYS的方法來(lái)避免重復(fù)建模的工作,并根據(jù)此方法開(kāi)發(fā)一個(gè)封隔器參數(shù)化建模的程序,從而在解決工程問(wèn)題時(shí)能夠更方便、更快捷[3]。
二次開(kāi)發(fā),簡(jiǎn)單地說(shuō)就是在現(xiàn)有的軟件上進(jìn)行定制修改和功能的擴(kuò)展,然后達(dá)到自己想要的功能,在ANSYS中也提供了二次開(kāi)發(fā)的技術(shù),它所集成的3個(gè)開(kāi)發(fā)工具,即參數(shù)化程序設(shè)計(jì)語(yǔ)言(APDL)、用戶界面設(shè)計(jì)語(yǔ)言(UIDL)和用戶程序特性(UPFs)[4-5],使得用戶在使用ANSYS軟件時(shí)更為便利和高效。其中使用最多、最廣泛的要數(shù)參數(shù)化程序設(shè)計(jì)語(yǔ)言(APDL)
參數(shù)化程序設(shè)計(jì)語(yǔ)言為一種解釋性語(yǔ)言,可以通過(guò)簡(jiǎn)單地變動(dòng)其中的設(shè)計(jì)參數(shù)來(lái)反復(fù)計(jì)算對(duì)照各類尺寸、加載大小的設(shè)計(jì)方案,極大地提高分析效率,降低分析成本。
每運(yùn)行一次ANSYS生成一段“*.log”文件,該文件記錄了ANSYS運(yùn)行過(guò)程中的每一個(gè)命令,以便在系統(tǒng)崩潰或用戶發(fā)生重大錯(cuò)誤時(shí),用“/input”命令調(diào)入“*.log”文件重新執(zhí)行命令,并且ANSYS為使用者提供了batch功能,可以實(shí)現(xiàn)“*.log”文件的后臺(tái)調(diào)用,通過(guò)這一功能,可以利用自己熟悉的編程軟件修改“*.log”文件中相應(yīng)的參數(shù),并調(diào)用 ANSYS 程序計(jì)算[1]。
在C#中調(diào)用ANSYS,采用的是新建進(jìn)程的方式調(diào)用的,核心代碼如下:

其中,“dlgOpen.FileName”表示ANSYS軟件所在文件路徑,“folder.SelectedPath”表示工作目錄,“In.txt”表示軟件生成的二次開(kāi)發(fā)代碼,“Out.out”表示ANSYS運(yùn)行后生成的反饋信息。
在ANSYS軟件后臺(tái)運(yùn)行時(shí)由于無(wú)法直接監(jiān)控計(jì)算進(jìn)程,我們采用監(jiān)控ANSYS軟件計(jì)算時(shí)自動(dòng)生成的“file.err”文件來(lái)判斷ANSYS軟件是否已經(jīng)求得結(jié)果。當(dāng)ANSYS軟件在進(jìn)行計(jì)算時(shí),該文件是不可操作的,當(dāng)ANSYS軟件計(jì)算完成,該文件即被釋放,我們通過(guò)C#判斷“file.err”文件是否被占用來(lái)判斷ANSYS軟件是否完成了計(jì)算。核心代碼如下:


根據(jù)本文提出的ANSYS調(diào)用方法,我們利用Visual Studio C#2008開(kāi)發(fā)出一款軟件系統(tǒng),并內(nèi)置了K344、Y341、Y341 逐 級(jí) 解 封 以 及Y344等幾種常用封隔器。為了驗(yàn)證此方法的可行性,下面以Y344封隔器為例來(lái)說(shuō)明C#與ANSYS的調(diào)用過(guò)程。在進(jìn)行分析之前,用戶需預(yù)先設(shè)定ANSYS啟動(dòng)路徑和工作目錄,啟動(dòng)路徑即為調(diào)用ANSYS的入口,用戶需在此項(xiàng)中找到ANSYS啟動(dòng)快捷方式“ANSYS.exe”的位置;工作目錄即為計(jì)算結(jié)果保存的路徑,由用戶自由設(shè)定。然后在界面中輸入封隔器的各項(xiàng)參數(shù),如圖1所示。本例中封隔器的計(jì)算參數(shù)主要包括:中心管內(nèi)徑50 mm,膠筒內(nèi)徑74 mm,膠筒外徑114 mm,隔環(huán)高度15mm,上下膠筒長(zhǎng)度85mm,中膠筒長(zhǎng)度70mm,膠筒外斜角45°,膠筒斜面高度10mm,套管內(nèi)徑124.3mm,套管外徑139.7 mm,上下膠筒邵氏硬度A80,中膠筒邵氏硬度A70,坐封力10 MPa。
在各項(xiàng)參數(shù)輸入完畢后,點(diǎn)擊“仿真”按鈕,系統(tǒng)會(huì)自動(dòng)建立封隔器模型并劃分網(wǎng)格,并從后臺(tái)調(diào)用ANSYS進(jìn)行計(jì)算,同時(shí)會(huì)把計(jì)算結(jié)果保存到工作目錄中,用戶可以根據(jù)自己的需要選擇各級(jí)菜單查看計(jì)算結(jié)果,如圖2~圖5所示。

圖1 參數(shù)設(shè)置

圖2 軸向位移

圖3 等效應(yīng)力

圖4接觸應(yīng)力云圖

圖5接觸應(yīng)力曲線
本文探討了基于C#框架下對(duì)ANSYS的調(diào)用問(wèn)題,通過(guò)采用參數(shù)化建模和后臺(tái)調(diào)用ANSYS進(jìn)程兩項(xiàng)技術(shù),開(kāi)發(fā)出一款軟件系統(tǒng),該系統(tǒng)提供了友好的界面和簡(jiǎn)單的操作,同時(shí),利用此系統(tǒng)可以對(duì)K344、Y341、Y341逐級(jí)解封,以及對(duì)Y344等幾種常用封隔器進(jìn)行計(jì)算,從而避免了反復(fù)建模,使其高效計(jì)算。另外,C#在生成ANSYS計(jì)算命令流的過(guò)程中采用的是動(dòng)態(tài)生成方式,并將所有計(jì)算參數(shù)進(jìn)行了關(guān)聯(lián)的同時(shí)校驗(yàn)了參數(shù)的有效性,避免生成的ANSYS命令流在ANSYS軟件后臺(tái)運(yùn)行時(shí)發(fā)生錯(cuò)誤,為開(kāi)發(fā)者提供了一種新思路。
[1] 吳鵬,曾紅,韓邁.基于ANSYS的二次開(kāi)發(fā)技術(shù)的實(shí)現(xiàn)方法[J].遼寧工學(xué)院學(xué)報(bào),2004,24(5):23-29.
[2] 彭公孚,席長(zhǎng)友.基于VB控件開(kāi)發(fā)的ANSYS程序調(diào)用方法[J].武漢理工大學(xué)學(xué)報(bào):交通科學(xué)與工程版,2004(1):148-150.
[3] 張曉麗,李德建,李明鵬.ANSYS軟件二次開(kāi)發(fā)技術(shù)的應(yīng)用[J].重慶工業(yè)學(xué)院學(xué)報(bào),2007,21(1):11-14.
[4] 駱鳴.淺談VB在ANSYS二次開(kāi)發(fā)中的應(yīng)用[J].天津職業(yè)院校聯(lián)合學(xué)報(bào),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.