【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开发环境搭建
查看更多评论 >