基于Python生成OPENSEES结构动画

基于Python生成OPENSEES结构动画
====
[Github地址]:GitHub - dinochen1983/Opensees_Python: 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地址]:GitHub - dinochen1983/Opensees_Python: Opensees_Python
[下载实例文件]:

点击下载实例文件:python源代码与实例包
====本节完====
欢迎关注我的微信公众号: DINOSTRU
 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值