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

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

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


圖3 Opensees 框架模擬
案例2:精細(xì)話模擬
如果我們想要對(duì)一個(gè)結(jié)構(gòu)進(jìn)行像abaqus一樣進(jìn)行三維精細(xì)化模擬,如對(duì)砌體結(jié)構(gòu)的模擬。這樣的實(shí)體模型,可不是通過寫tcl 代碼就可以完成的。而在SKTO中,通過點(diǎn)擊鼠標(biāo)即可以完成從幾何模型的建立到計(jì)算結(jié)構(gòu)的分析。

圖3 Opensees 三維砌體結(jié)構(gòu)模擬
結(jié)語:
所以STKO支撐后的Opensees的使用潛力將被很大程度挖掘,我們將可以輕易使用它的強(qiáng)大的材料庫(kù),單元庫(kù),算法,以及高效的求解過程,所以,作者也希冀助力STKO 搭載IOpensees 能夠擴(kuò)大opensees 在中國(guó)的影響的進(jìn)程。
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















