【OpenSEES新材料/單元開(kāi)發(fā)教程】第一講 綜述
文/Angus Zhang
公眾號(hào)/OpenSEES抗震筆記
Angus希望在這個(gè)專題教程中分享一下如何在OpenSEES 平臺(tái)利用C++編程編寫(xiě)出我們想要的單軸材料滯回準(zhǔn)則和宏觀單元行為的開(kāi)發(fā)。借此,希望各位同行可以一起為OpenSEES的日漸強(qiáng)大的能力注入新的動(dòng)力。當(dāng)然OpenSEES的開(kāi)發(fā),也可以是更為復(fù)雜的多維材料,單元,算法,截面等等,看各自需求,方法是大同小異的,但無(wú)論是什么對(duì)象的開(kāi)發(fā)研究,都需要各位潛心學(xué)習(xí),不要?dú)怵H。
1. 為什么要開(kāi)發(fā)新的單軸材料?
在開(kāi)發(fā)前之前,我們一定要明白我們的需求,千萬(wàn)不要盲從。在科研過(guò)程中切忌盲從,別人學(xué)了這個(gè),我也要學(xué),這是很不好的習(xí)慣,一定要弄清楚真切的需求。比如,我們研發(fā)了新型的節(jié)點(diǎn)連接,或者支撐構(gòu)造,或者阻尼器,或者剪力墻,在對(duì)其進(jìn)行精細(xì)有限元的基礎(chǔ)上,我們需了解其在結(jié)構(gòu)體系中的抗震行為,或者對(duì)具備這類節(jié)點(diǎn),支撐,阻尼器或者剪力墻的結(jié)構(gòu)體系進(jìn)行反應(yīng)譜分析時(shí),真實(shí)地描述上述節(jié)點(diǎn),支撐,阻尼器或者剪力墻的宏觀有限元模擬就顯得非常必要。當(dāng)這些節(jié)點(diǎn),支撐,阻尼器或者剪力墻的非線性滯回規(guī)則的數(shù)學(xué)模型在我們現(xiàn)有的OpenSEES 材料庫(kù)找不到相應(yīng)的材料做簡(jiǎn)化,那么我們的分析工作將遇到一個(gè)難點(diǎn)。如果分析難點(diǎn)不可不免,我們就可以根據(jù)OpenSEES現(xiàn)有的相近材料,通過(guò)C++的繼承和多態(tài)的屬性,修改一些描述材料滯回規(guī)則的數(shù)學(xué)公式可以快速實(shí)現(xiàn)自己需求的新材料的規(guī)則,如圖1所示。圖1是Angus師兄hushuling博士研發(fā)的摩擦彈簧阻尼器以及開(kāi)發(fā)的新材料滯回z

2. 前期學(xué)習(xí)建議和準(zhǔn)備
當(dāng)明白自身需求之后,我們自然而然需要為新材料開(kāi)發(fā)做一些知識(shí)準(zhǔn)備,對(duì)于新材料開(kāi)發(fā)的新手而言,大多數(shù)的時(shí)候,都無(wú)從下手,因?yàn)橄鄳?yīng)的中文資料有限。找到資料后,閱讀時(shí)可能又會(huì)惶惶不安,感覺(jué)非常之難,因?yàn)橹v解的對(duì)象是枯燥無(wú)聊的代碼,代碼中很多函數(shù)又是第一次遇到。其實(shí)大家在學(xué)習(xí)過(guò)程中的感受都是一樣的。但是一定要克服這樣的心態(tài),要明白一點(diǎn),你看不懂的代碼,95%是不需要你自己寫(xiě)的,很多都是復(fù)制別人或者通過(guò)繼承的方式獲得,了解即可,知道它的作用便足夠,我們最核心的任務(wù)是:修改材料的數(shù)學(xué)模型并其相應(yīng)的輸入和輸出。
我整理了現(xiàn)有的參考資料大致如下,這些資料都可以在交流群中下載到:
A:古泉的黃皮書(shū),或者古泉老師的上課課件(推薦);
B:Scott 教授blog 的一些推文和視頻;
C:Angus 之后陸續(xù)推出的基礎(chǔ)教程(可參考)。
無(wú)論上述哪一個(gè)教程,我們都需要掌握一定的C++基礎(chǔ)知識(shí),當(dāng)然如果學(xué)習(xí)能力很強(qiáng),系統(tǒng)學(xué)習(xí)是最好的,但是考慮到大多數(shù)的工科學(xué)生的電腦編程能力普遍偏弱。對(duì)于C++掌握的程度,Angus 的建議是:自己連猜帶蒙,能看懂60%現(xiàn)有的OpenSEES單軸材料CPP代碼。這個(gè)時(shí)候,在幾個(gè)關(guān)鍵部分,在通過(guò)別人的指引,就可以很順利的掌握OpenSEES 單軸材料的源代碼的開(kāi)發(fā)。幾個(gè)關(guān)鍵部分,比如如何將滯回規(guī)則的數(shù)學(xué)語(yǔ)言轉(zhuǎn)換成代碼;如何識(shí)源代碼中的代碼的重要性等等,這些可以自己多看多讀并感悟,也可以讓有經(jīng)驗(yàn)的人幫你梳理。
當(dāng)我們完成自己開(kāi)發(fā)的新材料所需的cpp和h文件后,我們還需要將該新材料重新編譯到OpenSEES, 生成新的openSEES.exe文件供我們使用和交流,這個(gè)過(guò)程包含兩個(gè)方面:
A:OpenSEES開(kāi)發(fā)平臺(tái)的搭建,可參考公眾號(hào)以往視頻教程;
【OpenSEES編程與原理】基于VS2022的OpenSEES3.3.0開(kāi)發(fā)環(huán)境搭建
B:新材料的添加和調(diào)試,可參考:
【OpenSEES編程與原理】新材料的添加和測(cè)試的視頻教程
當(dāng)然在我們調(diào)試過(guò)程中還會(huì)出現(xiàn)很多小的問(wèn)題,有些是我們代碼寫(xiě)錯(cuò)了,這些都可以通過(guò)代碼的調(diào)試檢查出來(lái),這個(gè)過(guò)程,直至我們想要的結(jié)果。
3. 其他建議
在后續(xù)學(xué)習(xí)OpenSEES開(kāi)發(fā)中,我們一定要經(jīng)常訪問(wèn)下面的網(wǎng)址:
https://github.com/OpenSees/

界面如上,在這里我們可以找到關(guān)于OpenSEES所有的信息,可以下載源代碼,也很方便在線瀏覽,手機(jī)也可以哈,hh支持你隨時(shí)隨地學(xué)習(xí)的野心。源代碼中,為了幫助后來(lái)人學(xué)習(xí),有些前輩也會(huì)更新必要的注解,所以這也是我們接下來(lái)源代碼講解的主陣地。
下一講將給大家?guī)?lái)C++的基礎(chǔ)語(yǔ)法和認(rèn)識(shí)單軸材料的頭.h文件,歡迎關(guān)注。
【公眾號(hào)內(nèi)容回顧】
【關(guān)于OpenSEES編程及原理】
1.【OpenSEES編程與原理】基于VS2022的OpenSEES3.3.0開(kāi)發(fā)環(huán)境搭建
2.【OpenSEES編程與原理】新材料的添加和測(cè)試的視頻教程
3.【OpenSEES編程與原理】 纖維單元之基于位移的梁柱單元理論分析(一)