Looking for something?

In Standard

OpenSees学点二次开发

OpenSees学点二次开发

OpenSees程序虽然没有可视化窗口,无法通过GUI进行操作,但是由于材料库丰富、收敛性较好,基于TCL语言便于大量循环语句使用,目前是土木抗震方面最炙手可热的有限元学术软件。OpenSees程序由加州大学伯克利分校开发,是完全开源的学术软件,如果想要学习有限元程序的二次开发,其源代码无疑是有志青年宝贵的资料库,但是我自己对于编程零基础,想要上手进行新材料的编写还是很困难的,最近我阅读了Elastic-Perfectly Plastic Material的C++代码,发现将其读懂都很难,后来我求教了我学计算机的同学,花费了大概一个多小时的时间给我讲解,终于看懂了其中的一些,先暂时记录下来,等我后面有时间了将其完全搞懂再回来补充!

Elastic-Perfectly Plastic Material这个材料其实就是土木中的最简单的非线性材料,一共包含四个参数,分别是:$E, $epsyP ,$epsyN ,$eps0,查看其C++代码,有两个文件,一个是.h结尾,一个是.cpp结尾,这个以.h结尾是主程序.cpp的头文件,里面声明了一些函数,并定义了该材料成员变量,而.cpp中则对该材料的进行了定义和输出。

先详细解释下.h的代码:

再来详细解释下.cpp的代码:

第一部分:由于代码比较长,需要一段一段的进行解释,首先是一堆头文件,其中包含了C++中的一些需要的库函数,也包含了一些开发者自己定义的宏,比如:elementAPI.h

第二部分:用来对该材料的输入进行一些定义和判别,比如如果用户输入错误的参数时对其进行提醒,又比如定义一些参数的默认初始值

第三部分:主要对该材料弹性段的内容进行了定义,通过对ElasticPPMaterial的重载,共分为三段,第一段对材料弹性段进行定义,也就是应力等于弹性模量乘以应变,第二段对用户输入错误时进行提示,并自动更正,第三段定义了空函数,这部分我没有看懂,可能涉及到外部调用

第四部分:析构函数,没啥好说的

第五部分:对材料是否进入塑性进行判断,

第六部分:输出当前步的计算结果

第七部分:

第八部分:运算失败时返回上一步的计算结果或最初状态

第九部分:将这个材料的地址拷贝了一份,然后扔出去

第十部分:这部分定义了一些输出,由于涉及到这个材料以外的知识,我还没有搞定

 

2 Comments 1480 Views

Related Post

2 Comments

  1. 博士就是不一般啊~

  2. 大神黄小刚

Leave a Reply