方勇, 羅權, 賈宏偉, 易文君, 李萬斌
(長江大學 機械工程學院,湖北 荊州434023)
ANSYS軟件為國際流行的大型通用有限元軟件,由于其強大穩定的性能,經常在航空航天、汽車工業、生物醫學、橋梁、建筑、電子產品、重型機械、微機電系統、運動器械等行業中用于分析各種大型工業問題,但是由于ANSYS的通用性使其對不同行業的專業性模塊分析不具有針對性,復雜的英文界面和繁瑣的分析步驟都給從事有限元分析的技術人員造成了很大的障礙[1]。因此利用ANSYS與其他CAD軟件之間的接口,進行ANSYS的二次開發,實現數據的共享和交換,將成為解決現代工程學問題的有力工具。然而針對不同的開發環境,ANSYS的調用方法也各不相同[2],本文將介紹一種C#調用ANSYS的方法來避免重復建模的工作,并根據此方法開發一個封隔器參數化建模的程序,從而在解決工程問題時能夠更方便、更快捷[3]。
二次開發,簡單地說就是在現有的軟件上進行定制修改和功能的擴展,然后達到自己想要的功能,在ANSYS中也提供了二次開發的技術,它所集成的3個開發工具,即參數化程序設計語言(APDL)、用戶界面設計語言(UIDL)和用戶程序特性(UPFs)[4-5],使得用戶在使用ANSYS軟件時更為便利和高效。其中使用最多、最廣泛的要數參數化程序設計語言(APDL)
參數化程序設計語言為一種解釋性語言,可以通過簡單地變動其中的設計參數來反復計算對照各類尺寸、加載大小的設計方案,極大地提高分析效率,降低分析成本。
每運行一次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軟件是否完成了計算。核心代碼如下:


根據本文提出的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接觸應力曲線
本文探討了基于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.