從編程角度闡述有限元最佳入門方法:以Abaqus 和OpenSees 為例
劃重點:通過本文,初步了解有限元軟件的計算內核和前后處理器的對計算機性能和編程語言的要求,基于此,我們應該選擇門檻最低的GUI方法去嫻熟有限元軟件。本文通過對比學習Abaqus 和OpenSees的過程, 建議各位可以嘗試使用STKO搭載OpenSees像使用具有友好GUI 的商業有限元一樣使用OpenSEES, 而無需任何編程能力。(本文由心塵軒博士執筆,就讀于香港理工大學,如果各位對STKO 有興趣,可加入群752746704,相互交流學習)
1. 前言:
作者曾執筆《無需TCL編程能力,STKO帶你輕松玩轉OpenSEES》,如果有興趣可以點擊下
面連接查看(https://www.jishulink.co m /content/post/1848287 ),在上一篇推文中,作
者翔實論述了OpenSees混合編程(Tcl+CPP)的本質,并用一個案列論證了STKO 可以使我
們輕松便利的玩轉Opensees,而無需任何的編程能力。
2. 正文:
本文則站在更高的維度來橫向對比其他商業有限元如Abaqus 的學習方法,以此來論述為什么建議初學者可以借助具有友好GUI界面的STKO 來掌握OpenSEES的學習和使用.
在學習有限元前,我們必然已經掌握了基本的有限元理論,這對我們更好地了解有限元軟件時大有裨益的。本質上,任何有限元應該包括三部分內容:與求解相關模塊,前處理模塊,后處理模塊。其中決定一個有限元優劣的就是其求解模塊,因此可以說,有限元軟件的CPU就是其求解模塊。求解模塊的求解速度,收斂性,材料庫,單元庫,相互作用,算法,這一整套代碼庫就可以將我們的有限元模型按照自由度組裝成剛度矩陣方程,按照一定的算法,進行剛度矩陣方程的求解,或者對該系統的微分方程進行積分等數值求解,上述的過程就是該模塊的主要工作,而這部分工作需要較大的計算資源。所以對于該模塊的代碼編寫,一般多采用能夠調用電腦資源的編程語言,比如C和Fortran。而我們常見的商業有限元軟件Abaqus和ansys 的求解模塊均由Fortran 語言編寫的,這也是為什么,我們經常看到很多學者基于自己課題研究的需要,通過Fortran語言編寫了很多材料的umat 或者vumat的子程序,實際上就是對abaqus 的材料庫進行了擴充。但是Fortran 語言相比C在調用計算機計算資源這方面,卻遠遠不及,這也是為什么,我們發現相同的自由度規模的分析,Opensees 的速度較Abaqus 快很多。更不用說,Opensees 中擁有最為強大的材料庫和單元庫,每年都會有很多來自全球的學者開發相當的代碼來擴充OS 的求解模塊。
而對于有限元軟件的前后模塊,則對計算性能要求不高,所以通常用其他的編程語言進行GUI的設計,比如我們常用的abaqus 就是采用python 語言進行前后處理器的設計的。前處理模塊,主要功能就是實現和使用者的交互,你在窗口上的點擊交互,會激發它自動生成某些代碼,比如你在用鼠標操作abaqus的每一步,都會在對應的abaqus.py文件中輸出相應的代碼如圖1:

圖1 Abaqus.py中對應GUI 操作代碼
最終abaqus 會自動把這些由GUI出發產生的代碼轉換為通用格式ASCII .inp 文件,由這些命令流去觸發abaqus 求解模塊,使其采用相應的材料,單元,作用,算法,荷載,來形成有限元模型,并對其求解。
上述分析,也就說明,我們在建立abaqus 模型時,可以采用三種方式建立模型,一是GUI操作,二是基于python 寫模型的script, 三是直接寫.inp 文件。 但是對于上述過程,對于初學者而言,或者大多數已經使用abaqus 的用戶,如果不做二次開發的話,想必對后兩者的方法都相當陌生。也只有高階的用戶才會用到零星的半點,比如常見地,我們需要給結構施加初始缺陷時,是直接在關鍵字中增加的,這就是因為,目前GUI 的操作沒有這個選項,而我們直接對inp 文件進行了干預。這也就從側面說明了一個有限元的友好的前處理器對于初學者時多么重要。也就是說,如果opensees 能夠有一個強大的GUI 界面,我們也可以完全不去理會tcl 命令流,就像我們可以幾乎可以不理會abaqus 基于python 的script 或者inp 文件一樣,享用opensees。
然而在過去的很長一段時間里,盡管Opensees 由于其出色的求解模塊而活躍于科研圈,但其價值還遠遠沒有被充分發掘出來,究其原因,主要就是沒有友好的GUI,初學者需要編寫一定的tcl 命令流,來和Opensees 的求解模塊進行數據交互,而這個過程,對于研究課題相對簡單的使用者來說,還能接受,一旦研究的課題空間化,復雜化,殼和實體化,通過tcl的編寫,盡管高手也有點捉襟見肘,所以我們必須要有一個強大的前后處理器來進一步擴大opensees 不光在科研圈,也在工程界的影響,當然在這個進程,很多學者也做了很多的努力,比如內地的陳學偉博士,加拿大的 Prof. Tony Yang.但總的來說Opensees 的前后處理還不是很友好。
作者基于自己使用用戶體驗,推薦由意大利ASDEA 公司為Opensees量身定制的基于CAD 操作的前后處理STKO 軟件,成功無縫對接Opensees,形成新一代有限元軟件,該軟件為Opensees 的進一步推廣必然有一定促進作用,該軟件也被Openses 官方網站特別推薦,如圖2。

圖2 Opensees 官網
3. 案例1:
以一個具體案例來說,對于如下圖的三維多層多跨鋼框架,如果我們需要用tcl 命令去寫,是很復雜,我們需要校核節點的編號,材料編號,截面編號,單元編號,單元截面的局部坐標,節點質量等等,在撰寫命令流時,很容易就會出錯,出錯后,Opensees 還不給具體提示,需要我們一段代碼一段代碼去調試,這個調試的過程時非常的費事的。而采用STKO,你僅僅需要十幾分鐘就完成幾何模型建立,然后在進行mesh 形成數值模型,最后直接提交計算,如果過程有錯,你可以通過圖形觀察模型,很容易發現錯誤,若無錯誤,很快就可以對結果進行可視化的分析。就如同GUI操作abaqus 一般,提取我們想要的應力,位移,以及力位移曲線等數據。


圖3 Opensees 框架模擬
案例2:精細話模擬
如果我們想要對一個結構進行像abaqus一樣進行三維精細化模擬,如對砌體結構的模擬。這樣的實體模型,可不是通過寫tcl 代碼就可以完成的。而在SKTO中,通過點擊鼠標即可以完成從幾何模型的建立到計算結構的分析。

圖3 Opensees 三維砌體結構模擬
結語:
所以STKO支撐后的Opensees的使用潛力將被很大程度挖掘,我們將可以輕易使用它的強大的材料庫,單元庫,算法,以及高效的求解過程,所以,作者也希冀助力STKO 搭載IOpensees 能夠擴大opensees 在中國的影響的進程。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















