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