钢框架地震损伤ABAQUS分析的Python应用研究
2020-07-27白润山马子彦段君胜
白润山 马子彦 郝 勇 段君胜
(河北建筑工程学院 土木工程学院,河北 张家口 075000)
0 引言
目前,ABAQUS软件是国际上运用最广泛、功能最先进的有限元分析软件之一,其广泛应用在建筑、机械、信息、生物等领域。ABAQUS软件有着强大的建模和计算功能,种类丰富的材料库和单元库,可以模拟绝大部分复杂的不规则模型的非线性有限元分析。此外,该软件拥有专门为进行二次开发而设定的功能窗口,可以实现软件中未开发的、能提高前后处理效率的接口。
Python语言起源于荷兰,是在ABC语言的基础上,作为脚本开发程序的编写。如今,伴随着越来越多的功能加入,Python语言逐渐成为一门高效率、易操作的编程语言。它作为开源软件,可以根据持有者的意向植入到多个平台中,加快运行速度。ABAQUS中向Python语言提供了许多数据库,为绕过CAE处理器直接操控ABAQUS的内核提供了有效便利的途径。本文就利用Python语言编程实现对钢框架结构模型地震作用下的前处理自动化建模和后处理参数的提取。
1 Python语言在ABAQUS中的二次开发
ABAQUS有限元软件善于将实际工程问题,尤其是非线性问题,简化为有限元模型进行仿真分析。例如,板、梁、杆、块状等,都能转化为仿真模型进行问题。但其庞大的单元、节点数据并不利于对结构建模及参数的提取整合。Python语言作为一门功能强大、面向对象性的编程语言,既能独立运行又可以作为脚本语言使用,往往只需要一小段的编码就能实现在建模、分析、后处理多个过程的复杂流程简化。因此,在应用程序开发得到了广泛应用,Python语言运用环境通信形式如图1所示。
图1 ABAQUS与Python语言脚本环境通信关系
因此,采用Python脚本语言与有限元软件ABAQUS相结合的方式,开发出一种能便捷、迅速建模及提取模型后处理参数的途径是重大的突破。
2 ABAQUS有限软件二次开发接口
ABAQUS是世界公认的拥有强大建模、分析等功能的有限元软件之一,但是其在前后处理方面与其他分析软件类似,均需要经历繁琐的定义、装配、数据分析过程。Python语言作为ABAQUS脚本的扩展,可通过编程修改ABAQUS的内核程序,实现自动化重复操作、创建模型、筛选数据库等,这都是通过操控对象模块实现的。
对象类型一般分为三种。其中,前处理有mdb对象模型,主要针对模型及作业对象;后处理为odb对象模型,主要针对模型和数据对象;session对象模型则主要控制视图,它包括对用户自定义、远程队列等。本文运用的以及常用的ABAQUS对象模块如图2所示。
图2 ABAQUS对象模型
将写好的Python语言编码导入ABAQUS软件中的途径有:(1)在ABAQUS/CAE 最下端的CLI 中直接将编码复制进去按回车;或者直接编写读取外部脚本的命令:execfile(‘文件名’)。(2)利用Run Script功能键导入外部脚本,在ABAQUS 刚启动时界面或者菜单栏中都可找到。(3)在启动ABAQUS/CAE时在命令窗口输命令启动脚本:abaqus cae script=文件名。
3 基于ABAQUS钢框架地震损伤分析
钢框架建模中需要多次操作相同或类似的流程,其中对多个相同操作的构件的截面、属性可通过Python 语言编程脚本实现,但大部分操作仍需通过ABAQUS/CAE 中建立模型。以九层钢框架为例,梁、柱都为工字形钢截面,楼板为混凝土板。各层梁截面尺寸皆相同,同层柱尺寸相同,具体尺寸见表1。柱之间的距离为6米,层高为4米,柱底部为铰接并受到X轴方向的地震波作用,俯视图如图3所示。
表1 钢框架结构梁柱截面尺寸
图3 钢框架平面图
3.1 前处理
由于本文都采用将编码直接输入CLI命令窗口的方法,故可直接导入应用模块即可。钢框架不同层高下存在不同的梁柱截面,故将part模块导入快速建立多种梁柱截面。
完成多梁、柱、板的建模后,需要对梁柱的界面进行定义,根据表1编程不同楼层状况下工字型梁柱截面。
1到5层柱:frameModel.IProfile(b1=0.55, b2=0.55, h=0.55, l=0.275, name='Z-1-5', t1=0.03, t2=0.03,t3=0.015)
6到7层柱:frameModel.IProfile(b1=0.45, b2=0.45, h=0.45, l=0.225, name='Z-6-7', t1=0.02, t2=0.02,t3=0.02)
8到9层柱:frameModel.IProfile(b1=0.3, b2=0.3,h=0.3, l=0.15, name='Z-8-9', t1=0.02, t2=0.02, t3=0.015)
梁截面尺寸:frameModel.IProfile(b1=0.35, b2=0.3, h=0.3, l=0.175, name='L', t1=0.03, t2=0.03, t3=0.03)
导入到Abaqus中得到截面分配如图4所示。
图4 层楼与梁柱剖面对应图
再经过对材料定义、装配、合并、画网络等一系列操作之后,得到的钢框架模型如图5所示。
图5 9层钢框架模型图
3.2 后处理
模型提交作业后,进入ODB界面就可查询模型的位移分布如图6所示。
图6 9层钢框架位移图
但是我们仅能通过颜色来综合辨别的位移大小,具体某个分析步中的位移最大值我们无法得知,为此可通过编辑脚本实现:
上述程序跳出如图7结果所示可知,模型在受力过程中magnitude位移最大值位于DZB分析步391针瞬时的时候,位移处于最大值为1.141145E+00米。
下述程序可实现地震完成瞬时节点的位移值,通过修改可提取出节点集中位移最大值,通过选择较小区域使结果更直观,且减少了删选的繁琐工作。
图7 magnitude位移最大值位置
表2 钢框架地震作用下最大节点位移
根据表2不难发现,楼板最大位移量随着层数越往上而增加,这与梁柱变形规律相契合,故可用楼板变形规律分析楼层的位移变化规律。由图8楼板增长率折线图可知,在1层与2层和7层与8层楼板间位移的增长率明显较大,但1层和2层的变形较小,故框架仅在7层与8层间有明显的变形,如图6所示框架位移图可知与结论相吻合。
图8 不同楼层板位移增长率分布
4.结论
本文阐述了Python语言在ABAQUS有限元软件中二次开发方法,并以9层钢框架为实例,对模型前后处理功能进行了开发,体现了Python语言编程的灵活和高效率。最后指出分析步中位移最大值所在的时程并提取结构地震完成后瞬时的楼层位移损伤参数。