从编程角度阐述有限元最佳入门方法:以Abaqus 和OpenSees 为例
划重点:通过本文,初步了解有限元软件的计算内核和前后处理器的对计算机性能和编程语言的要求,基于此,我们应该选择门槛最低的GUI方法去娴熟有限元软件。本文通过对比学习Abaqus 和OpenSees的过程, 建议各位可以尝试使用STKO搭载OpenSees像使用具有友好GUI 的商业有限元一样使用OpenSEES, 而无需任何编程能力。(本文由心尘轩博士执笔,就读于香港理工大学,如果各位对STKO 有兴趣,可加入群752746704,相互交流学习)
1. 前言:
作者曾执笔《无需TCL编程能力,STKO带你轻松玩转OpenSEES》,如果有兴趣可以点击下
面连接查看(https://www.jishulink.co m /content/post/1848287 ),在上一篇推文中,作
者翔实论述了OpenSees混合编程(Tcl+CPP)的本质,并用一个案列论证了STKO 可以使我
们轻松便利的玩转Opensees,而无需任何的编程能力。
2. 正文:
本文则站在更高的维度来横向对比其他商业有限元如Abaqus 的学习方法,以此来论述为什么建议初学者可以借助具有友好GUI界面的STKO 来掌握OpenSEES的学习和使用.
在学习有限元前,我们必然已经掌握了基本的有限元理论,这对我们更好地了解有限元软件时大有裨益的。本质上,任何有限元应该包括三部分内容:与求解相关模块,前处理模块,后处理模块。其中决定一个有限元优劣的就是其求解模块,因此可以说,有限元软件的CPU就是其求解模块。求解模块的求解速度,收敛性,材料库,单元库,相互作用,算法,这一整套代码库就可以将我们的有限元模型按照自由度组装成刚度矩阵方程,按照一定的算法,进行刚度矩阵方程的求解,或者对该系统的微分方程进行积分等数值求解,上述的过程就是该模块的主要工作,而这部分工作需要较大的计算资源。所以对于该模块的代码编写,一般多采用能够调用电脑资源的编程语言,比如C和Fortran。而我们常见的商业有限元软件Abaqus和ansys 的求解模块均由Fortran 语言编写的,这也是为什么,我们经常看到很多学者基于自己课题研究的需要,通过Fortran语言编写了很多材料的umat 或者vumat的子程序,实际上就是对abaqus 的材料库进行了扩充。但是Fortran 语言相比C在调用计算机计算资源这方面,却远远不及,这也是为什么,我们发现相同的自由度规模的分析,Opensees 的速度较Abaqus 快很多。更不用说,Opensees 中拥有最为强大的材料库和单元库,每年都会有很多来自全球的学者开发相当的代码来扩充OS 的求解模块。
而对于有限元软件的前后模块,则对计算性能要求不高,所以通常用其他的编程语言进行GUI的设计,比如我们常用的abaqus 就是采用python 语言进行前后处理器的设计的。前处理模块,主要功能就是实现和使用者的交互,你在窗口上的点击交互,会激发它自动生成某些代码,比如你在用鼠标操作abaqus的每一步,都会在对应的abaqus.py文件中输出相应的代码如图1:
图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 的进一步推广必然有一定促进作用,该软件也被Openses 官方网站特别推荐,如图2。
图2 Opensees 官网
3. 案例1:
以一个具体案例来说,对于如下图的三维多层多跨钢框架,如果我们需要用tcl 命令去写,是很复杂,我们需要校核节点的编号,材料编号,截面编号,单元编号,单元截面的局部坐标,节点质量等等,在撰写命令流时,很容易就会出错,出错后,Opensees 还不给具体提示,需要我们一段代码一段代码去调试,这个调试的过程时非常的费事的。而采用STKO,你仅仅需要十几分钟就完成几何模型建立,然后在进行mesh 形成数值模型,最后直接提交计算,如果过程有错,你可以通过图形观察模型,很容易发现错误,若无错误,很快就可以对结果进行可视化的分析。就如同GUI操作abaqus 一般,提取我们想要的应力,位移,以及力位移曲线等数据。
图3 Opensees 框架模拟
案例2:精细话模拟
如果我们想要对一个结构进行像abaqus一样进行三维精细化模拟,如对砌体结构的模拟。这样的实体模型,可不是通过写tcl 代码就可以完成的。而在SKTO中,通过点击鼠标即可以完成从几何模型的建立到计算结构的分析。
图3 Opensees 三维砌体结构模拟
结语:
所以STKO支撑后的Opensees的使用潜力将被很大程度挖掘,我们将可以轻易使用它的强大的材料库,单元库,算法,以及高效的求解过程,所以,作者也希冀助力STKO 搭载IOpensees 能够扩大opensees 在中国的影响的进程。
查看更多评论 >