呂鴻冠 黃技
本文利用 .NETFramework平臺上的 VB.NET語言,針對一個經(jīng)典的工程問題進(jìn)行代碼編寫,開發(fā)出一款專用的軟件解決一個典型的梁結(jié)構(gòu)分析問題。
一、引言
隨著計算機(jī)軟硬件的迅速發(fā)展,許多工程問題已經(jīng)逐從人工求解向計算機(jī)求解轉(zhuǎn)型,即從人工數(shù)值分析轉(zhuǎn)向計算機(jī)數(shù)值模擬。
目前,許多工程師運用有限元分析軟件來輔助自己的工程設(shè)計。但是,由于軟件自身的限制,當(dāng)一個工程的設(shè)計方案需要調(diào)整或出現(xiàn)錯誤時,所有數(shù)值模擬都要重新開始,整體上拖慢了工程進(jìn)度,延長了工程周期。
針對上述問題,不同工程師采用不同的方法解決自己的實際工作需求。二次開發(fā)技術(shù)是眾多解決方法中擁有較高效率、較高精度的一種。本文通過 VB.NET語言自帶的函數(shù)對 ANSYS Mechanical APDL產(chǎn)生的命令流文件進(jìn)行調(diào)用修改,實現(xiàn)梁結(jié)構(gòu)的“參數(shù)化分析”。
二、ANSYS命令流文件
1.ANSYS簡介
ANSYS是一款融結(jié)構(gòu)、流體、電磁場、聲場和熱學(xué)等為一體的大型通用有限元分析軟件,在多物理場耦合領(lǐng)域具有不可多得的優(yōu)勢,是現(xiàn)代工程師最常用的CAE軟件之一。在ANSYS 7.0版本后,ANSYS公司根據(jù)用戶需求,將ANSYS分成 ANSYS Workbench和 ANSYS MechanicalAPDL兩個不同的平臺,以適應(yīng)不同的分析情景。
2.ANSYS的工作平臺
ANSYS Workbench平臺是一種全新的界面和設(shè)計理念,通過自頂向下的分析方式向用戶展示了完整的分析過程,其最大的優(yōu)點是操控性強、參數(shù)化程度高、界面友好、接口豐富。ANSYS Mechanical APDL平臺即 ANSYS的經(jīng)典版,雖然界面相對落后,分析步驟較為復(fù)雜,可視化程度低,但是其分析過程可直接產(chǎn)生命令流文件。
3.APDL命令流文件
APDL命令流文件是 ANSYS特有的分析文件,通常為 Windows文本格式。它記錄了整個數(shù)值模擬的過程,包括一系列建模參數(shù)、網(wǎng)格劃分類型、求解器設(shè)置、后處理模塊設(shè)置等數(shù)據(jù)。利用命令流文件,只要通過改變其中關(guān)鍵的數(shù)據(jù),再通過調(diào)用ANSYS Batch(ANSYS批處理命令)進(jìn)行分析,即可得出模擬結(jié)果。本文就是在基于 APDL命令流文件的基礎(chǔ)上對 ANSYS進(jìn)行二次開發(fā)。
三、二次開發(fā)技術(shù)
1.二次開發(fā)技術(shù)的簡介
狹義上的二次開發(fā)技術(shù),即在現(xiàn)有軟件提供 SDK的基礎(chǔ)上,針對用戶的特別需求,利用 SDK中公開的 API(應(yīng)用程序接口),通過編程語言來訪問軟件原有的一些功能,即開發(fā)出一款用戶專用的軟件??偟膩碇v,二次開發(fā)技術(shù)具有以下優(yōu)點。
(1)相對于完全的定制開發(fā),二次開發(fā)工作量小,效率高,風(fēng)險低,周期短。
(2)二次開發(fā)在原有產(chǎn)品的基礎(chǔ)上進(jìn)行,故原產(chǎn)品的功能和優(yōu)點能有很好地繼承。
(3)解決了單純的產(chǎn)品個性化需求不能滿足的問題。
2.二次開發(fā)平臺的選擇
Microsoft Visual Studio(簡稱 VS)軟件是美國Microsoft公司的開發(fā)工具包系列產(chǎn)品。VS是一個完整的開發(fā)工具包,包括了整個軟件生命周期中所需要的大部分工具,如代碼管控工具、UML工具和集成開發(fā)環(huán)境 (IDE)等。所寫的目標(biāo)代碼適用于微軟支持的所有平臺,包括 Microsoft Windows、Windows Phone、.NETFramework、.NET Compact Framework和 MicrosoftSilverlight等。
3.二次開發(fā)編程語言的選擇
Visual Basic.NET語言是基于微軟公司的 .NETFramework上的面向?qū)ο蟮木幊陶Z言,通常簡稱 VB.NET(非 VB)。
VB.NET是當(dāng)今 Basic系語言中最完善的一種,其可視化操作與拖拽化編程環(huán)境贏得了廣大用戶的信任。與 VB不同,VB.NET具有更加完善的功能。
(1)真正面向?qū)ο蟮某绦蛟O(shè)計。
(2)強大的事件驅(qū)動功能。
(3)軟件的集成式開發(fā)。
(4)結(jié)構(gòu)化的程序語言設(shè)計。
(5)強大的數(shù)據(jù)庫訪問功能。
(6)支持對象的鏈接與嵌入、動態(tài)交換、動態(tài)鏈接等技術(shù)。
(7)網(wǎng)絡(luò)編程功能。
基于以上優(yōu)點,VB.NET是進(jìn)行軟件二次開發(fā)設(shè)計的理想編程語言。
四、APDL二次開發(fā)的可行性
ANSYS APDL平臺進(jìn)行有限元分析時,由于軟件自身的限制,導(dǎo)致當(dāng)模型改變或參數(shù)出現(xiàn)變動時,整個數(shù)值模擬過程重新進(jìn)行,這過程包括“重新建?!匦露x材料—重新劃分網(wǎng)格—重新定義邊界條件—重新設(shè)置求解器—重新求解”等步驟,需耗費大量的時間,重整體上拖慢工程進(jìn)度。
APDL每次進(jìn)行分析時,在工作目錄下會產(chǎn)生一個命令流文件,文件里記錄了項目的各種分析參數(shù)。利用VB.NET的文件操作函數(shù),在指定目錄下生成新的文本文件,通過 VB.NET中的數(shù)據(jù)寫入功能,將用戶自定義的參數(shù)賦予新的文本文件,從而形成新的命令流,再通過函數(shù)調(diào)用 ANSYS Batch進(jìn)行分析,并通過圖片控件直接顯示分析結(jié)果(各類分析云圖),實現(xiàn)真正意義上的“參數(shù)化分析”。
五、梁結(jié)構(gòu)分析的二次開發(fā)實例
本文利用工程上一個經(jīng)典的梁結(jié)構(gòu)結(jié)合 VB.NET進(jìn)行ANSYS的二次開發(fā),闡述二次開發(fā)的主要過程和實際的工程意義。開發(fā)的軟件如圖 1所示。
1.分析模型
本文采用的是工程上一個經(jīng)典的工字梁結(jié)構(gòu),具體模型如圖 2所示。
圖2梁結(jié)構(gòu)模型
其中:左端是固定端約束,右端在 XZ平面內(nèi)可左右滑動, Y方向不具自由度。梁截面是工字梁結(jié)構(gòu),具體的參數(shù)意義如圖 2所示。
2.命令流文件的獲取
進(jìn)入 APDL界面,設(shè)置 Preference為 Structural。依次點擊Preprocessor—Element Type—Add,選擇梁單元為 BEAM189。依次點擊 Section—Beam—CommonSections,選擇工字梁界面,輸入相關(guān)參數(shù)。依次點擊Modeling—Create—Nodes,按照圖 2完成模型的建立。依次點擊 Solution—Define Loads—Apply完成對模型的約束和荷載的定義。上述步驟完成后,點擊 Solve進(jìn)行求解,當(dāng)提示“Solve is done”時,進(jìn)入工作目錄,將生成的命令流文件保存(默認(rèn)的命令流文件是名為 file的 Windows文本)。
3.代碼編寫
得到命令流文件后,利用Microsoft Visual Studio2012平臺上的 VB.NET語言對命令流進(jìn)行二次開發(fā)。
向 Form1窗口添加一個 Button,并對 Button添加一個 Click事件響應(yīng)。首先,需指定一個目錄生成新的命令流文件,這里指定默認(rèn)目錄為工作環(huán)境,并用 Sw.WriteLine函數(shù)對新的命令流文件寫入原命令流數(shù)據(jù),語句中需用戶自定義的參數(shù)部分留空。部分關(guān)鍵代碼如圖 3所示。
將分析語句寫入新的命令流后,需定位 ANSYS原程序,這里通過 Shell函數(shù)實現(xiàn)該功能。部分關(guān)鍵代碼如圖 4所示。
接下來,需要建立一個控件存放ANSYS的安裝路徑,以便通過 Click事件響應(yīng)將路徑位置賦予命令流,這里通過定義 System.IO.Stream變量來實現(xiàn)。部分關(guān)鍵代碼如圖 5所示。
最后,為了保證每次分析結(jié)果不與上次分析結(jié)果混淆,需在每次新分析前對上次分析結(jié)果進(jìn)行清理,這里通過 kill函數(shù)實現(xiàn)這個命令。部分關(guān)鍵代碼如圖 6所示。
完成第一個 Button控件的編寫后。需添加一個 PictureBox控件和 4個 Button控件分別控制顯示 “位移、應(yīng)力、剪力、彎矩”四張云圖。這里,利用賦值函數(shù)直接將圖片名賦給PictureBox控件。部分關(guān)鍵代碼如圖7所示。
完成上述代碼最關(guān)鍵部分的編寫后,再對整體代碼和軟件界面進(jìn)行細(xì)節(jié)上的修改,全部完成后,導(dǎo)出最終的軟件應(yīng)用程序。
4.實例演算
完成軟件的設(shè)計(圖 1),下面通過一個實例來演示軟件的功能。本次分析參數(shù)如表所示。分析結(jié)果如圖8~11所示。
六、結(jié)語
本文通過利用 VB.NET對一個經(jīng)典的工程梁結(jié)構(gòu)問題進(jìn)行 ANSYS Mechanical APDL平臺上的二次開發(fā),設(shè)計出一款用戶個性化的軟件,詳細(xì)展示了二次開發(fā)的工作流程和實際應(yīng)用意義。在實際工作中,分析模型往往比該模型復(fù)雜,故開發(fā)用戶個性化的軟件具有重要的現(xiàn)實意義。經(jīng)過上面的分析,可知二次開發(fā)的具有如下優(yōu)點。
(1)參數(shù)化分析:通過實例演算可以看出,用戶通過自定義界面完成參數(shù)的輸入,無論改變哪個變量,均可通過界面一次性完成,免去了重建模等復(fù)雜步驟,極大縮短了分析時間。
(2)繼承性好:因為求解處理器仍然是 ANSYS的處理器,故用戶可將注意力集中在界面窗口設(shè)計和事件響應(yīng)上,而不必關(guān)心計算結(jié)果是否準(zhǔn)確。
(3)界面友好:通過軟件最終的設(shè)計結(jié)果可看出,開發(fā)出來的軟件界面友好,即使是不熟悉甚至是未曾學(xué)過ANSYS的用戶仍可進(jìn)行有限元分析,并得到準(zhǔn)確的分析結(jié)果。
(4)軟件通用性強:VB.NET編寫的 Windows程序能在任何安裝有 Windows系統(tǒng)的電腦上使用,故只要在安裝有 Windows和 ANSYS的電腦上都能使用。