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