摘 要: 以管道工程領域的結構應力分析要求為研究對象,針對通用有限元分析軟件的命令眾多、操作復雜的特點,提出了以Visual Basic開發(fā)用戶圖形化操作界面的方法來打包和封裝參數化過程命令,在后臺調用分析軟件進行計算,并輸出結果至用戶界面,從而建立了管道應力參數化計算機輔助分析平臺,該平臺大大簡化了分析過程并提高了工程設計效率,方便工程人員進行及時的分析和操作。
關鍵詞: 管道;應力分析;Visual Basic;有限元軟件;參數化
在工程領域,流體的輸送一般通過管道來實現,相對于其他復雜容器而言,雖然管道自身的結構比較簡單,但管道的長度較長,方向多變,其強度直接影響到生產過程的安全[1],因此在管道工程設計中一般要對管道進行結構分析以保證其工作應力在許用的范圍內。而對于輸送介質向高壓、高溫或者低溫的壓力管道而言[2],其應力分析工作十分繁瑣,一般要由管道工程師利用專業(yè)的管道有限元分析軟件來進行。目前的有限元分析軟件按功能可分為通用軟件和專業(yè)軟件,通用分析軟件可以對任何結構、任何復雜度的管道進行強度分析,但是需要工程人員熟悉軟件前處理、計算及后處理等繁瑣的菜單操作和命令。目前國內的設計機構一般采用的通用有限元軟件有ANSYS、ABAQUS、ADINA等。專業(yè)分析軟件只針對某種特定結構,例如在管道工程領域得到廣泛使用的應力分析軟件、CAESARII、AUTOPIPE等。這些軟件具備了良好的輸入、輸出界面,工程人員掌握了軟件的一般操作方法后,只需要進行管道的建模,軟件會自動進行應力的分析和后處理等操作,方便專業(yè)人員進行設計。對于設計機構,通常都要配置這兩種分析軟件,此時軟件的通用性和專業(yè)性成為一對矛盾,通用軟件雖然處理的問題多樣化,但需要專業(yè)水平較高,而專業(yè)軟件的應用領域則受到限制,造成一定的資源浪費。
Visual Basic是基于Windows平臺的開發(fā)工具,它以結構化Basic語言為基礎,繼承了原Basic語言簡單易學的優(yōu)點,同時提供了可視化的編程環(huán)境,以事件驅動作為運行機制,利用系統提供的大量可視化控件,可以非常快速地開發(fā)出適合用戶要求且十分友好的圖形化操作界面(GUI)[3]。針對上面提到的有限元軟件的通用性和專業(yè)性問題,將通用分析軟件所涉及到的前處理、計算過程和后處理等過程命令進行打包封裝,命令中關鍵參數利用Visual Basic建立界面方便用戶進行輸入,在后臺調用通用軟件進行計算,可以大大簡化分析過程,彌補通用分析軟件的不足。將以上解決方案用于管道工程應用領域,可以開發(fā)出用于管道應力分析的參數化計算機輔助分析平臺[4],其基本的開發(fā)流程如圖1所示。
1 參數化命令設計
后臺分析軟件采用ANSYS,該軟件具有管道單元可以模擬管道的各種屬性,同時可以加載結構和溫度載荷,非常適合進行管道的應力分析。此外,其APDL語言是一種十分高效的命令行操作方式,所有的命令均可以保存成文本的格式進行操作[5]。以石油化工工程領域中,同一平面內的兩段直管和一段彎管構成的管道為研究對象,如圖2所示。首先參數化命令的設計均用APDL建立關鍵的輸入參數,一般包括材料屬性、幾何屬性、荷載屬性、輸出屬性等,詳細的參數定義見表1。同時將這些參數均嵌入到APDL語言按照有限元分析的一般步驟中去,完成建模、加載分析、結果輸出等功能,保存成文本文件File_APDL.txt,用于后面設計的Visual Basic程序進行該文件調用和操作。
以定義管道的材料屬性為例,采用ANSYS的APDL語言可做如下定義:
MP,DENS,Density !定義密度
MP,EX,1,Elastic_Modulus!定義彈性模量
MP,NUXY,1,Poisson_Ratio!定義泊松比
MP,ALPX,1,Thermal_Expansion!定義熱膨脹系數
2 Visual Basic實現
Visual Basic中實現的功能主要是建立友好的用戶界面,并在后臺設計與ANSYS的接口和調用。用戶界面設計要方便用戶輸入關鍵的工程參數,并作出必要的判斷,后臺的設計則要與ANSYS的要求相符合[6],實現參數的輸入和結果的反饋。下面對于實現的具體功能做詳細的介紹。
2.1 用戶界面設計
用戶界面主要包括啟動界面、輸入界面和結果顯示界面。啟動界面如圖3所示。在啟動界面中,用戶通過“新建”按鈕,可以進入參數值為空的輸入界面,進行各項參數的輸入。通過“打開”按鈕,用戶可以選擇之前已經定義過的輸入文件,并將文本文件中對應的參數值讀取到輸入界面中對應的位置,用戶可以重新進行分析,并作相應的修改。
輸入參數界面如圖4所示,通過此界面,用戶可輸入管道應力分析中所需的各項參數,在完成輸入后單擊“保存”按鈕,將其保存為用戶命名的文本文件。為了確保用戶輸入的材料參數、管道參數和荷載參數的合法性(必須是數值數據),使用Visual Basin提供的IsNumeric判斷函數進行檢測。如果用戶輸入了非數值型數據或輸入為空,則彈出如圖5所示的消息框來提示用戶重新輸入。為了確保后臺計算的有效性,用戶在保存文件之前,“計算”按鈕為灰色,不可用,只有當用戶單擊“保存”按鈕,將輸入的參數保存成ANSYS可識別的命令行格式的文本文件,才可使用“計算”按鈕進行后臺計算。輸出界面將環(huán)向應力、軸向應力、彎曲及Mises應力都輸出,同時將Mises應力分布圖在該界面中顯示。
2.2 后臺接口設計
后臺接口主要是將上一步中的參數化命令設計文件進行讀取,并將用戶輸入的參數進行替代,同時調用ANSYS進行計算并將計算結果保存,方便用戶進行讀取。為了將用戶輸入的參數保存為上節(jié)中用APDL命令建立的參數化輸入文件,以方便ANSYS的識別和調用,可將用戶提前建立好的APDL命令行文本文件中的內容讀取出來。由于APDL文件的內容按命令行存放,每行中的數據項又以“,”為分隔符,因而在讀取時,首先使用Line Input#語句將文件中的內容按行讀取出來,存放在一個數組中,其次使用VB提供的字符串分割函數Split,依次將數組中存放的每行數據以“,”為分隔符,再分割為若干個數據項,并全部存放在一個新的數組中。
如將文本文件File_APDL.txt中的內容按行保存到數組a中的關鍵代碼如下:
Open "<Drive>\File_APDL.txt" For Input As #1
While Not EOF(1)
Line Input #1, a(i)
i = i + 1
Wend
其中,<Drive>為File_APDL.txt文件所在路徑。
使用VB提供的Replace函數將文本中出現的參數名替換為文本框中輸入的具體參數值。可將APDL命令行中出現的所有參數名用具體的值來替換,實現的關鍵代碼如下:
For i=0 To UBound(str)
str(i)=Replace(str(n), "Density", Trim(Text3.text))
str(i)=Replace(str(n), "Poisson_Ratio", Trim(Text4.text))
…
Next i
將替換后的數據項重新寫入用戶建立的新文本文件中,為了方便ANSYS的調用,新的文本文件必須與之前建立的APDL命令行文本文件的格式相同,因此在將數組str中的內容寫入文件時,必須取得之前APDL文件的命令行數和每行數據項數,數據項首先按行寫入,其次每行各個數據項之間還應寫入一個“,”。實現的關鍵代碼如下:
Open TextFile_Name For Output As #2
For i = 0 To UBound(a)
s = Split(a(i), ",")
For j = 0 To UBound(s) - 1
Print #2, str(n);
Print #2, ",";
n = n + 1
Next j
Print #2, str(n);
Print #2, Chr(13) + Chr(10);
n = n + 1
Next i
Close #2
當用戶選擇并打開已有的ANSYS文本文件時,將文件中對應的參數值讀取到輸入界面中對應的位置。為了將ANSYS文本文件中的參數值能正確顯示到相應的文本框中,通過認真分析APDL文件中的命令行,找到識別每個參數值的關鍵字,以及其和參數值之間的關系,取得需要的參數值,并將其顯示在對應的文本框中,用戶可以對其中的參數重新進行分析與修改,并重新保存。實現參數讀取的關鍵代碼如下:
For i = 0 To UBound(str)
′獲得參數工程名和工程描述
If str(i)="/FILENAME" Then Form2.Text1.Text=str(i+1)
If str(i)="/TITLE" Then Form2.Text2.Text=str(i+2)
……
Next i
后臺計算采用簡單高效并能帶輸入參數的Shell函數,實現Vsiual Basic對ANSYS的調用。實現后臺計算的關鍵代碼如下:
result=Shell("<Drive>\Ansys Inc\v100\ANSYS\bin\intel\
ansys100 -b -i " & <inputfile> & " -o " & <outputfile>)
其中,<Drive>表示ANSYS軟件的安裝目錄;-b表示用批模式啟動ANSYS;<inputfile>/<outputfile>為詳細的輸入、輸出文件路徑。
3 應用實例
以開發(fā)的輔助分析平臺進行某管道工程應用實例的計算,管道外徑700 mm,壁厚20 mm,第一段直管長3 m,彎管曲率半徑0.178 2 m,第二段直管長1.5 m,設計壓力10 MPa,設計溫度70 ℃,將這些參數在輸入參數界面進行定義,經過計算得到的輸出結果如圖6所示。
本文以管道工程領域的結構應力分析要求為研究對象,針對通用有限元分析軟件命令眾多、操作復雜的特點,提出了以Visual Basic開發(fā)用戶圖形化操作界面的方法來打包和封裝參數化過程命令,在后臺調用分析軟件進行計算,并輸出結果至用戶界面,從而建立了管道應力參數化計算機輔助分析平臺,該平臺可大大簡化分析過程并提高工程設計效率,方便工程設計人員進行及時的分析和操作。
參考文獻
[1] 蔡燦,錢作勤.基于VB的ANSYS管板強度校核及其優(yōu)化設計[J].石油與化工設備,2010,13(7):9-13.
[2] 張慶峰,謝禹鈞,李翔.基于ANSYS二次開發(fā)的管系結構應力分析系統[J].機械設計與制造,2006(3):78-79.
[3] 牟淑志,牟福元,李翔.基于ANSYS二次開發(fā)的結構拓撲優(yōu)化[J].計算機應用與軟件,2010,27(2):228-230.
[4] 呂大立,姚安林,王清遠.基于VC++的ANSYS二次開發(fā)及其在埋地管道動力分析中的應用[J].四川建筑,2010,30(8):116-118.
[5] 于秀坤,朱虹,金基鐸,等.基于ANSYS二次開發(fā)的輸液曲管振動特性分析[J].沈陽航空工業(yè)學院學報,2005,22(5):21-23.
[6] 田會方,張杰峰.基于VC與ANSYS的參數化有限元分析[J].交通與計算機,2004,22(6):116-118.