从编程角度阐述有限元软件最佳入门方法:以Abaqus 和OpenSEES 为例

文/心尘轩

网站/STKO OpenSees Software (asdeasoft.net)

欢迎关注STKO官方公众号,目前许可证正在免费开放中,欢迎大家申请

从编程角度阐述有限元软件最佳入门方法:以Abaqus 和OpenSEES 为例

一、正文叙述:

本文站在横向对比的维度,如Abaqus的学习方法,以此来论述为什么建议初学者可以借助具有友好GUI界面的STKO来掌握OpenSEES的学习和使用。

在学习有限元软件前,我们必然已经掌握了基本的有限元理论,这对我们更好地了解有限元软件是大有裨益的。本质上,任何有限元软件应该包括三部分内容:与求解相关模块,前处理模块,后处理模块。其中决定一个有限元优劣的就是其求解模块,因此可以说,有限元软件的“CPU”就是其求解模块。求解模块的求解速度,收敛性,材料库,单元库,相互作用,算法,这一整套代码库就可以将我们的有限元模型按照自由度组装成刚度矩阵方程,按照一定的算法,进行刚度矩阵方程的求解,或者对该系统的微分方程进行积分等数值求解,上述的过程就是该模块的主要工作,而这部分工作需要较大的计算资源。所以对于该模块的代码编写,一般多采用能够调用电脑资源的编程语言,比如C和Fortran。而我们常见的商业有限元软件Abaqus和Ansys 的求解模块均由Fortran语言编写的,这也是为什么,我们经常看到很多学者基于自己课题研究的需要,通过Fortran语言编写了很多材料的umat 或者vumat的子程序,实际上就是对Abaqus 的材料库进行了扩充。但是Fortran 语言相比C在调用计算机计算资源这方面,却远远不及(这里是小轩的使用感受,不代表业内观点),这也是为什么,我们发现相同的自由度规模的分析,OpenSEES的速度较Abaqus 快很多。更不用说,OpenSEES中拥有最为强大的材料库和单元库,每年都会有很多来自全球的学者开发相当的代码来扩充OpenSEES的求解模块。

而对于有限元软件的前后模块,则对计算性能要求不高,所以通常用其他的编程语言进行GUI的设计,比如我们常用的Abaqus 就是采用python 语言进行前后处理器的设计的。前处理模块,主要功能就是实现和使用者的交互,你在窗口上的点击交互,会激发它自动生成某些代码,比如你在用鼠标操作Abaqus的每一步,都会在对应的Abaqus.py文件中输出相应的代码如图1:

从编程角度阐述有限元软件最佳入门方法:以Abaqus 和OpenSEES 为例

图1 Abaqus.py中对应GUI 操作代码

最终Abaqus 会自动把这些由GUI出发产生的代码转换为通用格式ASCII .inp 文件,由这些命令流去触发Abaqus求解模块,使其采用相应的材料,单元,作用,算法,荷载,来形成有限元模型,并对其求解。

上述讨论,可以说明,我们在建立Abaqus 模型时,可以采用三种方式建立模型,一是GUI操作,二是基于python 写模型的script, 三是直接写.inp 文件。但是对于上述过程,对于初学者而言,或者大多数已经使用Abaqus 的用户,如果不做二次开发的话,想必对后两者的方法都相当陌生。也只有进阶的用户才会用到零星半点,比如常见地,我们需要给结构施加初始缺陷时,是直接在关键字中增加的,这就是因为,目前GUI 的操作没有这个选项,而我们直接对inp 文件进行了干预。这也就从侧面说明了一个有限元软件的友好前处理器对于初学者是多么重要。也就是说,如果OpenSEES能够有一个强大的GUI 界面,我们也可以完全不去理会tcl 命令流,就像我们可以几乎可以不理会Abaqus 基于python 的script 或者inp文件一样,享用OpenSEES。

然而在过去的很长一段时间里,尽管OpenSEES由于其出色的求解模块而活跃于科研圈,但其价值还远远没有被充分发掘出来,究其原因,主要就是没有友好的GUI,初学者需要编写一定的tcl 命令流,来和OpenSEES的求解模块进行数据交互,而这个过程,对于研究课题相对简单的使用者来说,还能接受,一旦研究的课题空间化,复杂化,壳和实体化,通过tcl的编写,尽管高手也有点捉襟见肘,所以我们必须要有一个强大的前后处理器来进一步扩大opensees不光在科研圈,也在工程界的影响,当然在这个进程中,很多学者也做了大量的努力,比如内地的陈学伟博士,加拿大的 Prof. Tony Yang.但总的来说OpenSEES的前后处理还不是很友好。

作者基于自己使用用户体验,推荐由意大利ASDEA 公司为OpenSEES量身定制的基于CAD 操作的前后处理STKO 软件,成功无缝对接OpenSEES,形成新一代有限元软件,该软件为OpenSEES的进一步推广必然有一定促进作用,该软件也被OpenSEES官方网站特别推荐,如图2。

从编程角度阐述有限元软件最佳入门方法:以Abaqus 和OpenSEES 为例

图2OpenSEES官网

二、案例分享:

案例1:杆系模型

以一个具体杆系模型案例来说,如图3的三维多层多跨自复位支撑钢框架,如果我们需要用tcl 命令去写,就会很复杂,我们需要校核节点的编号,材料编号,截面编号,单元编号,单元截面的局部坐标,节点质量等等,在撰写命令流时,很容易就会出错,出错后,OpenSEES还不给具体提示,需要我们一段代码一段代码去调试,这个调试的过程时非常的费事的。而采用STKO,你仅仅需要十几分钟就完成几何模型建立(也可从现有的有限元软件中导入几何模型),然后在进行mesh 形成数值模型,最后直接提交计算,如果过程有错,你可以通过图形观察模型,很容易发现错误,若无错误,很快就可以对结果进行可视化的分析。就如同GUI操作Abaqus 一般,提取我们想要的应力,位移,以及力位移曲线等数据。

从编程角度阐述有限元软件最佳入门方法:以Abaqus 和OpenSEES 为例

从编程角度阐述有限元软件最佳入门方法:以Abaqus 和OpenSEES 为例

图3OpenSEES框架模拟

案例2:精细化模拟

如果我们想要对一个结构进行像Abaqus一样进行三维精细化模拟,如对砌体结构的模拟(图4所示)。这样的实体模型,可不是通过写tcl 代码就可以轻易完成的。而在SKTO中,通过点击鼠标即可以完成从几何模型的建立到计算结构的分析。

从编程角度阐述有限元软件最佳入门方法:以Abaqus 和OpenSEES 为例

图4OpenSEES三维砌体结构模拟

三、结语

小轩相信搭载OpenSEES的新一代有限元软件STKO会使得OpenSEES使用潜力很大程度地被挖掘出来,我们将可以轻易使用它的强大的材料库,单元库,算法,以及高效的求解过程,所以,作者也希冀助力STKO 搭载OpenSEES能够扩大OpenSEES在中国以及世界的影响的进程。目前公司允许中国的用户免费申请试用。

公众号内容回顾:

从编程角度阐述有限元软件最佳入门方法:以Abaqus 和OpenSEES 为例

来源:ANSYS有限元仿真

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月6日
下一篇 2022年2月6日

相关推荐