【OpenSEES新材料/單元開發教程】第一講 綜述
文/Angus Zhang
公眾號/OpenSEES抗震筆記
Angus希望在這個專題教程中分享一下如何在OpenSEES 平臺利用C++編程編寫出我們想要的單軸材料滯回準則和宏觀單元行為的開發。借此,希望各位同行可以一起為OpenSEES的日漸強大的能力注入新的動力。當然OpenSEES的開發,也可以是更為復雜的多維材料,單元,算法,截面等等,看各自需求,方法是大同小異的,但無論是什么對象的開發研究,都需要各位潛心學習,不要氣餒。
1. 為什么要開發新的單軸材料?
在開發前之前,我們一定要明白我們的需求,千萬不要盲從。在科研過程中切忌盲從,別人學了這個,我也要學,這是很不好的習慣,一定要弄清楚真切的需求。比如,我們研發了新型的節點連接,或者支撐構造,或者阻尼器,或者剪力墻,在對其進行精細有限元的基礎上,我們需了解其在結構體系中的抗震行為,或者對具備這類節點,支撐,阻尼器或者剪力墻的結構體系進行反應譜分析時,真實地描述上述節點,支撐,阻尼器或者剪力墻的宏觀有限元模擬就顯得非常必要。當這些節點,支撐,阻尼器或者剪力墻的非線性滯回規則的數學模型在我們現有的OpenSEES 材料庫找不到相應的材料做簡化,那么我們的分析工作將遇到一個難點。如果分析難點不可不免,我們就可以根據OpenSEES現有的相近材料,通過C++的繼承和多態的屬性,修改一些描述材料滯回規則的數學公式可以快速實現自己需求的新材料的規則,如圖1所示。圖1是Angus師兄hushuling博士研發的摩擦彈簧阻尼器以及開發的新材料滯回z
圖1 新型阻尼器和新材料開發
2. 前期學習建議和準備
當明白自身需求之后,我們自然而然需要為新材料開發做一些知識準備,對于新材料開發的新手而言,大多數的時候,都無從下手,因為相應的中文資料有限。找到資料后,閱讀時可能又會惶惶不安,感覺非常之難,因為講解的對象是枯燥無聊的代碼,代碼中很多函數又是第一次遇到。其實大家在學習過程中的感受都是一樣的。但是一定要克服這樣的心態,要明白一點,你看不懂的代碼,95%是不需要你自己寫的,很多都是復制別人或者通過繼承的方式獲得,了解即可,知道它的作用便足夠,我們最核心的任務是:修改材料的數學模型并其相應的輸入和輸出。
我整理了現有的參考資料大致如下,這些資料都可以在交流群中下載到:
A:古泉的黃皮書,或者古泉老師的上課課件(推薦);
B:Scott 教授blog 的一些推文和視頻;
C:Angus 之后陸續推出的基礎教程(可參考)。
無論上述哪一個教程,我們都需要掌握一定的C++基礎知識,當然如果學習能力很強,系統學習是最好的,但是考慮到大多數的工科學生的電腦編程能力普遍偏弱。對于C++掌握的程度,Angus 的建議是:自己連猜帶蒙,能看懂60%現有的OpenSEES單軸材料CPP代碼。這個時候,在幾個關鍵部分,在通過別人的指引,就可以很順利的掌握OpenSEES 單軸材料的源代碼的開發。幾個關鍵部分,比如如何將滯回規則的數學語言轉換成代碼;如何識源代碼中的代碼的重要性等等,這些可以自己多看多讀并感悟,也可以讓有經驗的人幫你梳理。
當我們完成自己開發的新材料所需的cpp和h文件后,我們還需要將該新材料重新編譯到OpenSEES, 生成新的openSEES.exe文件供我們使用和交流,這個過程包含兩個方面:
A:OpenSEES開發平臺的搭建,可參考公眾號以往視頻教程;
【OpenSEES編程與原理】基于VS2022的OpenSEES3.3.0開發環境搭建
B:新材料的添加和調試,可參考:
當然在我們調試過程中還會出現很多小的問題,有些是我們代碼寫錯了,這些都可以通過代碼的調試檢查出來,這個過程,直至我們想要的結果。
3. 其他建議
https://github.com/OpenSees/
界面如上,在這里我們可以找到關于OpenSEES所有的信息,可以下載源代碼,也很方便在線瀏覽,手機也可以哈,hh支持你隨時隨地學習的野心。源代碼中,為了幫助后來人學習,有些前輩也會更新必要的注解,所以這也是我們接下來源代碼講解的主陣地。
下一講將給大家帶來C++的基礎語法和認識單軸材料的頭.h文件,歡迎關注。
歡迎關注公眾號
【公眾號內容回顧】
【關于OpenSEES編程及原理】
1.【OpenSEES編程與原理】基于VS2022的OpenSEES3.3.0開發環境搭建
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















