基于Python生成OPENSEES结构动画
====
[Github地址]:
https://github.com/dinochen1983/Opensees_Python
[下载实例文件]:点击下载实例文件:python源代码与实例包
我们一般采用OPENSEES做一些新型的结构分析方法的研究,可是OPENSEES是以命令流为主的建模分析软件,采用TCL语言开发结构显示变形动画也是比较麻烦的。在毕业设计,论文答辩,学术报告中加入OPENSEES的结构分析动画,比如结构的变形动画,会给整个展示带来加分,所以我们一般会通过编程的方法实现OPENSEES结果的动画展示。其实现在的ETO已经可以实现结构动画的展示,如下图所示。
在ETO程序中点击【Post】–【Animation】,输入总步数及显示变形比例,导入计算结果的文件就可以显示动画了。
ETO程序中显示动画的功能,ETO程序下载方法:http://dinochen.com/article.asp?id=149
有同学现在不只是采用ETO进行建模,也有可能采用自研究的程序进行建模,所以接下来我介绍一下采用Python语言简单编制OpenSEES的结构变形动画后处理程序的做法。基于这个Python的源代码,你也可以修改为显示结构的塑性铰开展,内力及应力的变形等等,都可以基于这个源代码进行修改
以上两本书是我推荐的PYTHON入门教材
Python目前被广泛用于后处理的库,我常用的有三种:OPENGL(适用于大型三维), Matplotlib(适用于小模型计算科研使用),还有一个就是pyGame(虽然用于游戏开发,但对于结构的后处理是相当好用的)。本篇博客介绍的是基于Matplotlib的OPENSEES后处理方法。如果经常使用matlab的小伙伴,看到Matplotlib的语句与逻辑就相当熟悉了,其实它就是用于绘制科学图表的命令流。
整个OPENSEES的后处理流程我以下面的例子展开:
(1) 为了方便快速建模,在ETABS程序中建立以下框架结构模型,在例子文件包可以下载。导出S2K文件(ETABS程序采用ETABS9.6.0版本)
采用ETABS 960进行框架结构的建模
(2) 导入ETO程序,生成OPENSEES的命令流分析代码,如下图所示。梁柱单元采用的是Elastic Beam Column Element,弹性梁柱单元。分析是采用弹性时程分析,在ETO的设置如下所示。
导出OPENSEES的文本模型文件
设置成生成时程分析输出
(3) 通过ETO导出OPENSEES的分析文本文件 model.tcl,进行局部修改。Model.tcl可以以示例文件压缩包中找到。其中主要的修改如下:
地震波的名字改为 gm1x.txt
节点位移的保存方式修改如下:
recorder Node -file node0x.out -time -nodeRange 1 357 -dof 1 disp
recorder Node -file node0y.out -time -nodeRange 1 357 -dof 2 disp
recorder Node -file node0z.out -time -nodeRange 1 357 -dof 3 disp
代表X,Y,Z三个方向的位移值分开存储在3个不同的文件当中,一个文件储存全部节点的单个方向的位移。
(4) 打开OPENSEES程序,运行该命令流文件,最终得到位移分析结果。下一步就是采用PYTHON(基于MATPLOTLIB库)进行结构变形的动画绘制了。
(5) 准备结构模型信息传递给PYTHON程序,基于结构模型的TCL代码修改,这一步可以在EXCEL中操作,将节点信息保存为node.csv文件,将全部杆系单元的单元编号,节点编号保存element.csv,采用以下格式:
(6) 下载示例包中的python源代码 p1.py,该python文件的功能,就是读取结构分析结果、结构节点、结构单元,生成结构变形的动画文件,以gif的形式。打开python就可以运行了。安装以下包:
Csv: 导入CSV文件
Imageio:生成GIF图形
Matplotlib: 科学图形工具
Numpy: 数列与矩阵计算
Pandas: 文本操作
(7) 在运行PYTHON之前,需要填写以下信息:
nstep = 1000 opensees分析结果的总步数
step_size = 5 这里是每隔5步生成一帧动画
num_step = int(nstep/step_size) 实际的帧数
scr_factor=250.0 位移显示比例
zone_height = 60*1000.0 模型的总高度
center_x = 9000.0 模型X方向形心
center_y = 9000.0 模型Y方向形心
step_duration_gif = 0.02 实际GIF文件的播放速率
(8) 通过PYTHON程序生成的动画如下所示。以ETO的程序对比如下图所示。ETO相对操作简单,但是python的开源性更好,同学可以根据自已的需要编制适用于自已的后处理。
PYTHON的代码界面,采用VS CODE工具
最终使用PYTHON生成的GIF动画
采用ETO生成的结构变形动画
====
[Github地址]:
https://github.com/dinochen1983/Opensees_Python
[下载实例文件]:点击下载实例文件:python源代码与实例包
====本节完====
欢迎关注我的微信公众号: DINOSTRU
===最后彩蛋====
有兴趣共同学习OPENSEES与编程的同学,可以加以下微信群