呂鴻冠 黃技


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