吳新麗,郭春景,張 揚(yáng)
WU Xin-li1,GUO Chun-jing2,ZHANG Yang3,4
(1.南陽理工學(xué)院 教育學(xué)院,南陽 473004;2.焦作大學(xué) 基礎(chǔ)科學(xué)系,焦作 454000;3.上海交通大學(xué) 船舶海洋與建筑工程學(xué)院,上海 200240;4.南陽理工學(xué)院 土木工程學(xué)院,南陽 473004)
ANSYS軟件是以有限元分析為基礎(chǔ)的大型通用CAE程序,具有強(qiáng)大的前、后處理和計(jì)算分析能力,廣泛應(yīng)用于機(jī)械制造、土木工程、電子、生物、醫(yī)學(xué)等眾多領(lǐng)域,能夠進(jìn)行結(jié)構(gòu)分析、熱分析、流體分析、電磁場分析和耦合場分析等,并提供了與Pro/ENGINEER、SolidWorks、UG、CATIA等多數(shù)CAD軟件的接口。在ANSYS中直接建立復(fù)雜的幾何模型,具有難度大、建模效率低和不易修改等缺點(diǎn)。對(duì)于復(fù)雜模型,通常采用先在Pro/ENGINEER等三維造型軟件中建立模型,再通過ANSYS提供的CAD軟件接口導(dǎo)入模型,這樣雖然可以提高建模的效率,但是在導(dǎo)入的過程中往往會(huì)遇到一系列的問題,如數(shù)據(jù)的兼容性、對(duì)細(xì)微結(jié)構(gòu)的忽略等問題[1,2]。
用戶圖形界面設(shè)計(jì)語言UIDL(User Interface Design Language)是針對(duì)用戶GUI定制的開發(fā)工具,是編寫或改造ANSYS圖形界面的專用設(shè)計(jì)語言,能夠完成以下三種圖形界面的設(shè)計(jì):主菜單系統(tǒng)及菜單項(xiàng)、對(duì)話框和聯(lián)機(jī)幫助系統(tǒng)[3]。ANSYS參數(shù)化設(shè)計(jì)語言APDL(ANSYS Parameter Design Language)是一種用來完成有限元常規(guī)分析操作或通過參數(shù)化變量方式建立分析模型的腳本語言[4]。APDL用智能化分析的手段,為用戶提供自動(dòng)完成有限元分析過程的功能。APDL擴(kuò)展了傳統(tǒng)有限元分析范圍之外的能力,可以利用APDL進(jìn)行二次開發(fā),但是由于APDL文件方式不直觀,限制了其應(yīng)用。UIDL主要是控制GUI界面的二次開發(fā),涉及分析部分很少,但在UIDL中嵌入APDL命令可以構(gòu)建比較復(fù)雜的GUI二次開發(fā)。
本文以創(chuàng)建三維彈簧實(shí)體為例,利用UIDL和APDL,對(duì)ANSYS進(jìn)行二次開發(fā),實(shí)現(xiàn)三維彈簧實(shí)體的便捷、高效的參數(shù)化建模。
UIDL是ANSYS專門為用戶提供的進(jìn)行程序界面設(shè)計(jì)的語言,允許用戶靈活使用和組織設(shè)計(jì)ANSYS圖形用戶界面。UIDL控制文件由一個(gè)控制文件頭和一系列的結(jié)構(gòu)塊組成。控制文件頭是一系列特定的UIDL命令,用來向UIDL處理器傳遞控制文件的信息。結(jié)構(gòu)塊是UIDL控制文件的核心,它涵蓋了菜單信息、命令信息以及幫助文件信息。按照其不同的功能類型,結(jié)構(gòu)塊可分為菜單結(jié)構(gòu)塊、命令結(jié)構(gòu)塊和幫助結(jié)構(gòu)塊。
為了實(shí)現(xiàn)對(duì)三維彈簧實(shí)體的快速、高效的參數(shù)化建模,選取基圓半徑、螺距、彈簧半徑和螺旋個(gè)數(shù)4個(gè)變量為彈簧幾何參數(shù),首先使用UIDL語言進(jìn)行用戶程序界面設(shè)計(jì),在ANSYS主菜單Main Menu >Preprocessor >Modeling >Create下添加創(chuàng)建三維彈簧實(shí)體命令項(xiàng)“Spring”,并創(chuàng)建其對(duì)應(yīng)的彈簧幾何參數(shù)設(shè)置對(duì)話框。
自定制主菜單,添加命令項(xiàng)“Spring”。ANSYS主菜單的信息是由其安裝目錄下的ANSYS Incv120guien-usUIDL文件夾中的UIMENU.GRN文件提供的,所以首先在UIMENU.GRN文件的Men_Create52結(jié)構(gòu)塊中的適當(dāng)位置添加自定義的命令結(jié)構(gòu)塊鏈接Fnc_MyModel,具體代碼如下,編譯運(yùn)行后的結(jié)果如圖1所示。
圖1 自定制主菜單
自定制彈簧幾何參數(shù)設(shè)置對(duì)話框。在UIDL文件夾的UIFUNC2.GRN文件中添加自定義的命令結(jié)構(gòu)塊Fnc_MyModel,具體代碼如下,編譯運(yùn)行后的結(jié)果如圖2所示。在對(duì)話框中設(shè)置4個(gè)彈簧幾何參數(shù)后,點(diǎn)擊“OK”按鈕,將運(yùn)行用APDL編寫的create_spring宏命令流,根據(jù)設(shè)置的彈簧幾何參數(shù),完成三維彈簧實(shí)體的創(chuàng)建。
圖2 自定制對(duì)話框
建立參數(shù)化的實(shí)體模型是參數(shù)化有限元分析的基礎(chǔ)。APDL是ANSYS提供的參數(shù)化設(shè)計(jì)語言,是一種高效的參數(shù)化建模手段。APDL提供了標(biāo)量參數(shù)、數(shù)組參數(shù)、表達(dá)式和函數(shù)、分支和循環(huán)、重復(fù)功能和縮寫、宏及用戶程序等功能,這些功能可以單獨(dú)使用或者組合使用[5]。
用戶程序界面設(shè)計(jì)完成后,使用APDL語言編制三維彈簧實(shí)體參數(shù)化建模程序create_spring.MAC,并保存在ANSYS安裝目錄下的ANSYS Incv120guiapdl文件夾中。宏文件create_spring.MAC的命令流內(nèi)容如下:
使用APDL編制參數(shù)化建模程序,同時(shí)使用UIDL對(duì)用戶程序界面進(jìn)行設(shè)計(jì),完成對(duì)ANSYS的二次開發(fā),實(shí)現(xiàn)對(duì)三維彈簧實(shí)體的便捷、高效的參數(shù)化建模。下面進(jìn)行具體的應(yīng)用舉例,創(chuàng)建兩種不同的三維彈簧實(shí)體。
單擊圖1 所示的A N S Y S 主菜單中的命令項(xiàng)“Spring”,即Main Menu >Preprocessor >Modeling >Create >Spring,將彈出圖2所示的彈簧幾何參數(shù)設(shè)置對(duì)話框,在該對(duì)話框中設(shè)置基圓半徑是160 mm、螺距是50 mm、彈簧半徑是10 mm、螺旋個(gè)數(shù)是7,點(diǎn)擊“OK”按鈕,將自動(dòng)運(yùn)行三維彈簧實(shí)體參數(shù)化建模程序create_spring.MAC,根據(jù)設(shè)置的彈簧幾何參數(shù)值,創(chuàng)建三維彈簧實(shí)體,結(jié)果如圖3所示。
重新設(shè)置彈簧幾何參數(shù):基圓半徑200 mm、螺距80 mm、彈簧半徑20 mm、螺旋個(gè)數(shù)3,點(diǎn)擊“OK”按鈕,將創(chuàng)建圖4所示的三維彈簧實(shí)體。
圖3 應(yīng)用實(shí)例1
圖4 應(yīng)用實(shí)例2
本文以創(chuàng)建三維彈簧實(shí)體為例,利用ANSYS提供的用戶圖形界面設(shè)計(jì)語言UIDL和參數(shù)化設(shè)計(jì)語言APDL,對(duì)ANSYS進(jìn)行二次開發(fā),開發(fā)出滿足用戶自己功能需求的菜單和對(duì)話框,將復(fù)雜的建模操作過程封裝成用戶自己的程序,從而將復(fù)雜問題簡單化,實(shí)現(xiàn)了復(fù)雜幾何模型的便捷、高效的參數(shù)化建模,減少了用戶大量的重復(fù)性操作,大大提高了工作的效率。
[1]白葳,喻海良.通用有限元分析ANSYS 8.0基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2005.
[2]鄧凡平.ANSYS 10.0有限元分析自學(xué)手冊(cè)[M].北京:人民郵電出版社,2009.
[3]程銘,吳志軍,馮平法.基于UIDL的ANSYS用戶菜單定制技術(shù)[J].機(jī)械制造,2006,44(10):44-46.
[4]龔曙光,謝桂蘭,黃云清.ANSYS參數(shù)化編程與命令手冊(cè)[M].北京:機(jī)械工業(yè)出版社,2009.
[5]龔曙光,黃云清.有限元分析與ANSYS APDL編程及高級(jí)應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2009.