无需TCL编程能力,STKO带你轻松玩转OpenSEES
划重点:通过本文,你会了解OpenSEES(以下简称OS)基于tcl 和C++混合编程的实质,会洞悉一个有限元软件的三大主要部分,会明白现在OS的不足。并在对一个有限元软件宏观认识的基础上爱上OS,同时借助专为OS量身定制的STKO 玩转OS,无需理会tcl编写脚本,如同操作sap2000一般,尽情享用OS的强大的求解器和无线壮大的材料库,单元库和算法。(此推文由心尘轩博士执笔,就读于香港理工大学结构工程,如果各位看官对这个软件非常有兴趣,不妨加入交流群(752746704))
曾几何时,初识OS的研究生都会在师兄或者老师的嘴里听说过OS的强大,什么开源啊,高效啊。可当我们自己慢慢叩开OS的大门的时候,面对一个仅有exe文件的黑框,是否也曾怀疑过人生。这是啥,这和我们常见的有限元,如ABAQUS, ANSYS, PERFORM3D,ETABS,SAP2000等都大不一样,没有基于GUI(图形用户交互)界面,似乎就是个寂寞,可为什么现在越来越多的研究员对其飞蛾扑火呢,这里面一定有不可告人的秘密,今天小编就带大家领略一下OS的魅力,领略PEER前辈的无私和大爱。
1. 不一样的有限元
准确的来说,OS不是一个有限元软件,实质上它是一个求解器,当搭配上tcl 脚本后,才能名义上算得上有限元软件。Tcl 脚本充当了类似一般可视化有限元的前后处理器,连同OS求解器组装成的有限元。于是看到这里,很多人会以位OS是tcl编写的代码,如果这样想,你就大错特错了,你离OS的内核还太远。我们所编写的tcl脚本,仅仅是OS代码的冰山一角,它的职责仅仅是激发tcl与C++的接口,即tcl的代码仅仅告诉OS你要调用哪些材料库,哪些单元库,哪些算法的源代码,由这些源代码对有限元模型进行刚度矩阵方程的求解(典型的NR method)静力计算,或者采用NM方法 积分的动力计算。所以学习OS如果你不知道源代码,是一件非常遗憾地事情,我们可以不会编写,但是我们一定要知道它的存在,才能感概老前辈们的无私。
在官方(Open System for Earthquake Engineering Simulation - Home Page (berkeley.edu) )页面,我们可以轻松下载源代码,如图1。
图1
这里装的是啥,我们打开它,如图2,很多文件夹,如单元,材料,模型,记录等,当我们再次点击这些文件夹,以材料文件为例,狠狠的打开它。这才恍然大悟,原来里面装的都是每个我们在编写tcl 语句中使用的材料对应的头文件(.h)和主体代码(.Cpp).换句话说,tcl编写的语句,仅仅是告诉OS我要用这些材料,单元,算法,而实际上真正计算模型的是OS在调用这些C代码。这里也解释,为什么同样规模的数值模型,OS的求解速度会比ABAQUS之类要快很多,是因为求解的内核C语言对于计算机的资源调动和利用是非常高的,这也是为什么,很多很软件底层语言都会选择C语言得原因。
图2
上述得分析我们向我们阐释了一个事实,实际上,OS的计算模型的原理从解读代码的角度就是tcl+c++的混合编程。为什么要混合编程,其实思想就是物尽其用。C语言擅长计算,那么把和计算相关的材料,单元,算法都用C编制,而对于建立几何模型和设置参数,对计算的性能需求不高,就用tcl补充,所谓相得益彰。
综上分析,我们可以知道传统基于tcl 编制,通过tcl和C的相互接口,实现数据交互,进而实现了tcl 满足前后处理,C实现求解器的不一样的有限元。
2. OS的包容和高效
接下来我们来谈一谈,为什么说OS是无私和包容的软件。其实OS的魅力也就是因为此,也必将因为此成为日后研究圈的一颗明星。PEER前辈们通过自己的努力,编写了这些源代码,最后他们决定将这些源代码,免费的贡献出来,在学术圈共享。这是多么伟大的举措,没有商业化,纯粹的学术的追求。因为在这样的情怀下(当然最重要还是这些源代码写的好),越来越多的科研人员开始使用。随着用户的需求随着课题不断地开展,用户对当前的材料库,单元库,算法也越来越不满足,恰恰又因为C语言具有封装,继承,和多态的特征,使得OS具有开源的特点。允许任何研究者对现有的材料库,单元库,算法库等进行修改和扩充,这也是为什么,几十年的发展,在包容的情怀下,OS汇集全世界科研人员共同的努力也越来约丰富,这也是为什么笔者认为,OS必将是未来一颗屹立不倒的新星,因为它不是一个人在战斗,是全世界的研究人员都在开发它,为它的充实在努力,这肯定比一个公司研发人员的智慧多了去。
那么如何开发它,其实这是很复杂的过程,需要一定的编程能力,因为开发新的材料,单元,或者算法,自然你要先了解PEER前辈是如何做,你遵循他们的逻辑,自然也就很容易实现,这里可以跟大家简单分享下。
开发新的材料,需要有开发编译代码的环境,我们经常使用VS,如图3,这基本是每个做编程人员的必备。
图3
其次我们要仿照OS现有的材料格式,如图4的selfcentringMaterial.cpp格式,根据自己想要材料的滞回规则编写你的代码,然后在根据selfcentringMaterial.h格式,编写对应的头文件,最后将这样的newMAaterial.h和newMaterial.cpp文件添加到uniaxial文件下,对其编译,调试,直至成功。之后,生成的opensees.exe执行文件,这时就可以使用你自己开发的材料啦。其实上述的过程也解释为什么berkeley网站不定时会更新OS的版本,一方面是修正bug,另一方面给就是扩充单元库和材料库,讲到这,小伙伴们,赶快去官网下载最新的版本吧。对于OS的高效,那是因为C语言本身特征决定的。
图4
3. STKO带你无需理会tcl玩转OpenSEES
上述两节,差不多把OS求解的功能夸上天,它没有掣肘的地方么,他那么优秀,为什么普及率还是不高。正所谓成也萧何败也萧何,OS太牛,开发者更牛,他们混迹学术圈,也不管我们刚入门的小虾米,他们以为tcl 语言建模的过程就等同是GUI窗口了,而事实是,tcl对于不学编程的学生来说,我们也想说NO啊,更别说工程界的设计人员了,这就使得OS的受众不大。
划重点,不要怕,救星来啦,由意大利软件开发公司ASDEA为OS量身定做的STKO,完美解决了这个问题。让我们无需理会tcl,直接像操作SAP2000一样操作OS。请听我慢慢道来。
OS强在求解效率,而且是开源免费,那么开发一款新的有限元只要搭载OS即可,这也是STKO研发的思路,无缝对接OS。通过GUI操作,建立几何模型,赋予材料,单元,截面,边界,分析设置,和SAP2000一样,点击运行,计算完成,即时查看后处理,可以查看更多,更细致的结构,包括积分点纤维的应力应变。闲话不多说,上案例。
################################自复位钢框架###############################
Step 1通过点击鼠标,类似SAP2000,或者baqus 模型数一样,两三分钟即可实现几何模型搭建,这样的莫模型。
Step 2 划分网格建立有限元,也仅需点击mesh。
Step 3 计算。点击analysis即可。
Step 4 后处理查看结果。可以看动态变形,可以看积分点纤维应力应变,依次如下图。自然,我们也可以很方便的得到我们的滞回曲线图。
在这一通GUI的操作下,我们也会很方便对我们的模型进行有目的的纠错。在整个过程中,我们没有理会任何的代码编程,仅仅就把它当作一个普通的可视化有限元进行处理,多么迎合我们一贯的行为啊。所以在这里强烈推荐大家可以学习这一款由意大利ASDEA开发的STKO,让它带我们玩转OS吧。
结后语:我们致力于扩大将这么强大的OS 求解器在中国乃至世界的用户群体,让我们的设计搭载由全世界科研人员努力的智慧,也使得科研得以回馈社会。
查看更多评论 >