魏 巍 ,魏會東
(1.天津商業(yè)大學(xué)寶德學(xué)院 計(jì)算機(jī)與信息技術(shù)系,天津300384;2.海洋石油工程股份有限公司,天津300451)
在工程領(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),通常都要配置這兩種分析軟件,此時軟件的通用性和專業(yè)性成為一對矛盾,通用軟件雖然處理的問題多樣化,但需要專業(yè)水平較高,而專業(yè)軟件的應(yīng)用領(lǐng)域則受到限制,造成一定的資源浪費(fèi)。
Visual Basic是基于Windows平臺的開發(fā)工具,它以結(jié)構(gòu)化Basic語言為基礎(chǔ),繼承了原Basic語言簡單易學(xué)的優(yōu)點(diǎn),同時提供了可視化的編程環(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所示。
后臺分析軟件采用ANSYS,該軟件具有管道單元可以模擬管道的各種屬性,同時可以加載結(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ù)均嵌入到APDL語言按照有限元分析的一般步驟中去,完成建模、加載分析、結(jié)果輸出等功能,保存成文本文件File_APDL.txt,用于后面設(shè)計(jì)的 Visual Basic程序進(jìn)行該文件調(diào)用和操作。
表1 參數(shù)化項(xiàng)目
以定義管道的材料屬性為例,采用ANSYS的APDL語言可做如下定義:
MP,DENS,Density!定義密度
MP,EX,1,Elastic_Modulus!定義彈性模量
MP,NUXY,1,Poisson_Ratio!定義泊松比
MP,ALPX,1,Thermal_Expansion!定義熱膨脹系數(shù)
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ì)的介紹。
用戶界面主要包括啟動界面、輸入界面和結(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)力都輸出,同時將Mises應(yīng)力分布圖在該界面中顯示。
后臺接口主要是將上一步中的參數(shù)化命令設(shè)計(jì)文件進(jìn)行讀取,并將用戶輸入的參數(shù)進(jìn)行替代,同時調(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)又以“,”為分隔符,因而在讀取時,首先使用Line Input#語句將文件中的內(nèi)容按行讀取出來,存放在一個數(shù)組中,其次使用VB提供的字符串分割函數(shù)Split,依次將數(shù)組中存放的每行數(shù)據(jù)以“,”為分隔符,再分割為若干個數(shù)據(jù)項(xiàng),并全部存放在一個新的數(shù)組中。
如將文本文件File_APDL.txt中的內(nèi)容按行保存到數(shù)組a中的關(guān)鍵代碼如下:
其中, 使用VB提供的Replace函數(shù)將文本中出現(xiàn)的參數(shù)名替換為文本框中輸入的具體參數(shù)值??蓪PDL命令行中出現(xiàn)的所有參數(shù)名用具體的值來替換,實(shí)現(xiàn)的關(guān)鍵代碼如下: 將替換后的數(shù)據(jù)項(xiàng)重新寫入用戶建立的新文本文件中,為了方便ANSYS的調(diào)用,新的文本文件必須與之前建立的APDL命令行文本文件的格式相同,因此在將數(shù)組str中的內(nèi)容寫入文件時,必須取得之前APDL文件的命令行數(shù)和每行數(shù)據(jù)項(xiàng)數(shù),數(shù)據(jù)項(xiàng)首先按行寫入,其次每行各個數(shù)據(jù)項(xiàng)之間還應(yīng)寫入一個“,”。實(shí)現(xiàn)的關(guān)鍵代碼如下: 當(dāng)用戶選擇并打開已有的ANSYS文本文件時,將文件中對應(yīng)的參數(shù)值讀取到輸入界面中對應(yīng)的位置。為了將ANSYS文本文件中的參數(shù)值能正確顯示到相應(yīng)的文本框中,通過認(rèn)真分析APDL文件中的命令行,找到識別每個參數(shù)值的關(guān)鍵字,以及其和參數(shù)值之間的關(guān)系,取得需要的參數(shù)值,并將其顯示在對應(yīng)的文本框中,用戶可以對其中的參數(shù)重新進(jìn)行分析與修改,并重新保存。實(shí)現(xiàn)參數(shù)讀取的關(guān)鍵代碼如下: 后臺計(jì)算采用簡單高效并能帶輸入?yún)?shù)的Shell函數(shù),實(shí)現(xiàn)Vsiual Basic對ANSYS的調(diào)用。實(shí)現(xiàn)后臺計(jì)算的關(guān)鍵代碼如下: 其中, 以開發(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)行及時的分析和操作。 [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.3 應(yīng)用實(shí)例