ABAQUS批量截图技术及其在深埋长隧洞中的应用

2016-01-27 06:02张道法张继勋
三峡大学学报(自然科学版) 2015年6期

张道法 张继勋

(河海大学 水利水电学院, 南京 210098)



ABAQUS批量截图技术及其在深埋长隧洞中的应用

张道法张继勋

(河海大学 水利水电学院, 南京210098)

摘要:深埋长隧洞由于其内在的复杂性和特殊性,计算工况和典型断面众多,有限元计算后处理截图工作任务繁重,批量截图技术省时省力.本文基于实用角度在ABAQUS平台上实现了截图的批量处理,编制了相关的Fortran程序,将其应用于西南某工程,结果表明,批量截图技术通用、可靠、准确、快速,显著提高了工作效率.

关键词:深埋长隧洞;ABAQUS;批量截图;Fortran程序;脚本文件

大型通用有限元软件ABAQUS以其强大的非线性处理能力而著称,在岩土工程等领域取得了广泛的应用[1].ABAQUS强劲的计算内核风靡全球,自动选取增量步和收敛准则,能够迅速高效地解决实际问题.后台运行简单、方便,为在其他程序中调用ABAQUS提供了便利.随着大型复杂工程项目的大量建设,有限元计算辅助设计广泛使用.在实际撰写项目报告时,大量有限元计算得到的位移、应力等云图需要截取,ABAQUS虽然提供了强大的后处理功能,但基本上属于逐张截取,在批量截图方面相对薄弱.尤其对于深埋长隧洞等地下工程而言,洞线长,环境复杂,必然计算断面及工况众多,计算完毕后的截图任务就更为繁重,本文从批量处理的角度出发,编写了批量截图的Fortran程序,利用Python脚本文件将ABAQUS的截图功能嵌入所编程序之中,减轻了截图工作的劳动强度,实际工程应用表现出良好的适用性.

1Python脚本文件及Fortran语言在ABAQUS中的应用

1.1Python脚本的应用

ABAQUS中命令操作一般有两种方式,一是通过CAE中图形用户界面即GUI操控软件,二是采用Python语言编写的脚本文件绕过CAE命令直接操控ABAQUS内核.CAE中的每一步操作均对应相应的脚本命令,类似于ANSYS中的APDL语言,Python脚本也有着参数化建模的功能,我们可以完全用脚本命令的形式完成建模、生成inp文件、提交求解器运算甚至后处理的一系列功能,而不需要繁琐的GUI操作.脚本文件的方式具有不可替代的优点,尤其对于参数化建模方面,仅需改变几个参数,就能实现不同的模型,对于模型优化而言,方便、高效,具有现实意义.脚本文件用Python语言编写,Python是一种面向对象的解释型高级语言,它简洁、优美、高效,在很多软件中得以应用.ABAQUS自带了Python解释器,并且拓展了它的对象模型,ABAQUS中有3种主要对象模型分别为mdb对象、odb对象和session对象.实际应用中,开发人员无需深刻掌握Python语言及ABAQUS对象模型,ABAQUS提供了脚本录制功能,自动生成脚本文件,大大降低了开发的难度.近年来,许多学者对此展开了研究.钟同圣[2]等通过Python语言开发ABAQUS前处理模块,解决了大量重复单元建模时的烦琐问题.李慧[3]等对ABAQUS后处理进行了二次开发,扩展了其后处理功能.张强[4]等系统地介绍了基于Python的ABAQUS的二次开发原理与方法.

1.2Fortran语言的应用

Fortran语言作为世界上第一门高级语言,自诞生以来,先后经历了Fortran66、Fortran77、Fortran90等几个版本,每一次改变都是赋予该语言新的生命力,使之更具有时代特点,至今在科学计算届仍然享有盛誉.Fortran语言与ABAQUS软件的结合通常有两种方法,一是自编子程序的方式供ABAQUS软件调用,也就是ABAQUS的二次开发,从而扩充软件的功能,使ABAQUS在更广泛的领域应用,解决更专业的问题.ABAQUS提供了大量子程序接口,各种材料子程序、单元子程序等便是这种方式的实际应用,很多学者对此做了大量研究,也取得了不少有益的成果.徐远杰[5]等将Duncan-Chang本构嵌入到ABAQUS软件中,杨曼娟[6]则在ABAQUS中开发了修正Mohr-Coulomb模型.另一种则相反,它是把ABAQUS作为一个子模块,在自编程序中调用ABAQUS软件,把它当成一个超级计算器一样嵌入程序之中,自主权完全由自编程序控制,对于需要多次调用有限元计算过程的问题特别有效.目前对此种方式的研究比较少,反馈分析中常常将有限元软件嵌入到优化算法中,以期实现参数优化.本文采用了第二种方式,将ABAQUS作为一个模块融入到自编的批量截图程序中,但仅涉及到了打开odb文件和相关的截图功能,也就是所谓的后处理功能.

2批量截图技术流程

2.1实现过程

批量截图实际上是针对同一模型的不同工况而开发的,实际应用中,仅需对所要截的图形的种类、大小进行设定,对一个工况进行截图,录制其截图过程,生成py脚本文件,其他工况仅要简单修改脚本文件,重新载入ABAQUS即可实现.为防止将上一次截的图片覆盖,也为方便后期使用Word VBA将图片批量导入Word中,需要对图片进行重命名.所谓批量操作就是自动修改脚本文件,自动载入脚本文件到ABAQUS中,实现截图功能,同时对所截图片进行重命名,并判定何时运算结束,尽可能减少截图人员对于数据的输入,提高通用性和自动化水平.具体实现过程见图1.

图1 批量截图流程

2.2ABAQUS脚本文件的生成及运行

ABAQUS中生成脚本文件的方式多样,最直接的方法就是直接编制Python脚本文件,但通常人工编制的方式较为复杂,需要对Python语言与ABAQUS对象模型有深入的理解,编写起来费时费力.更为常用的方式是使用ABAQUS自带的录制功能,在CAE中的每一个操作命令都可以被记录下来,自动形成脚本文件,具体的录制方式也可以分为以下几种:

1)采用ABAQUS的宏录制功能.在File菜单下的Macro Manager选项中,创建一个新的宏,开始录制,将所有操作进行完毕之后,结束录制,即可在工作目录中找到录制的py脚本文件,可以用文本编辑工具打开并对其进行修改.

2)修改rpy文件形成脚本文件.CAE中的每一步操作过程都会被自动地记录到rpy文件中去,只需要略加修改其中对我们有用的内容,然后修改扩展名即可以方便地生成脚本文件.

3)修改jnl文件形成脚本文件.jnl文件中包含模型数据库的CAE命令,如果损失该文件,对模型进行的修改将不能够得到恢复,因此jnl文件中的命令也可以经过修改以形成我们需要的脚本文件.

ABAQUS中脚本文件的接口较多,运行脚本文件既可以在打开软件时点击Run Script命令,或是在命令行窗口中使用execfile命令,也可以在command窗口中使用abaqus cae script=*.py命令运行.本文采用修改rpy文件的方式生成脚本文件,并在Fortran程序中调用command命令的方式实现.

2.3Fortran程序编制

程序主要实现两大功能即自动更新脚本文件和自动调用ABAQUS软件(Fortran程序与ABAQUS接口模块).

2.3.1更新py文件模块

自动更新脚本文件是程序的主要功能之一.脚本文件记录了一个工况的截图过程,截取下一个工况图片时需要替换相关的结果文件名称和所截图片名称.手动更新速度慢且截图过程不连续,程序自动更新使得过程连续化,真正实现了批量处理.采用逐行读取,定位需要更新行,将更新内容写入以替换的方式实现脚本文件更新.程序不需要手动输入更新内容,也无须事先知道odb结果文件的个数和名称,采用调用批处理文件的形式实现,dir命令自动列出结果文件名称,以供主程序读取.

2.3.2与ABAQUS软件接口模块

所谓接口模块就是Fortran程序与ABAQUS软件之间的数据交流.截图程序用到的数据交流文件有两种.一种是将Fortran程序运行后更新得到的脚本文件载入ABAQUS,二是将ABAQUS运行后产生的图片文件读入Fortran程序以供重新命名.其中一个重要的问题就是如何在Fortran程序中调用ABAQUS软件.Visual Fortran5.0编译器中采用调用系统函数的方式实现.在使用系统函数前需要先使用use dflib命令载入此函数所在模块,然后使用systemqq函数即可成功在自编程序中调用ABAQUS软件.

3工程案例分析

3.1工程概况

西南某水电站是一座以发电为开发目的的超大型引水式地下电站,是西电东送的骨干电站之一.电站最大水头318.8 m,额定水头288 m,共安装八台混流式水轮发电机组,单机容量600 MW,总装机容量4 800 MW.该工程的主要技术难点在于横穿山脉的几条长隧洞,隧洞沿线地质条件复杂,碳酸盐岩地层分布广泛,地下水活跃.深埋长隧洞将不可避免地遇到高地应力和高外水压力等工程问题.引水隧洞全线埋深较大,一般埋深为1 500~2 000 m,最大埋深约达2 525 m.引水隧洞处于高地应力、高地下水和高地温状态.洞轴线长约16.6 km,沿线地质条件变化复杂,选取多个典型计算断面进行计算,每个断面建模时,沿轴线方向取3 m厚,衬砌设置排水孔以降低外水压力,并在模型中加入了锚杆和钢筋,计算模型图详见图2及图3.

图2 典型断面计算模型

图3 计算断面细部构造

该引水隧洞工程前期计算时沿线共选取了16个计算断面,断面桩号从K1+613到K16+175不等,考虑了6种计算工况分别是1)运行期+汛期雨季;2)引水隧洞初期充水(暂不考虑外水压力);3)运行期+汛期暴雨;4)检修放空+汛期雨季;5)检修放空+多年平均;6)3号洞施工期充水前+汛期暴雨.每个断面共有4条引水隧洞,2条辅助洞和1条排水洞,总计7条长隧洞.初步计划按照隧洞编号来截图,隧洞编号从左到右依次为1到7,每条隧洞计划截取围岩竖向位移、围岩小主应力、围岩大主应力、围岩塑性区、衬砌小主应力、衬砌大主应力、钢筋小主应力、钢筋大主应力及锚杆应力计9张图,分别编号1到9.前期计算得到的odb文件都已按照工况号_断面号的形式命名.可以计算共需要截16×6×7×9=6048张图,可以想象这是一个庞大的工作量,手工截图不仅速度慢,而且易于出错.本文采用所研制的批量截图程序进行处理,提高了截图的效率和准确性.

3.2批量截图技术工程应用

3.2.1截图过程

选择16个断面6个工况中的其中的一个断面的一个工况的计算结果进行脚本文件的录制,以1-1.odb为例(即工况1断面1的计算结果),打开CAE载入1-1.odb,按照截图要求设定截图的样式、类型和大小,依次截取7条隧洞的各项云图,以记录截取的过程,图片命名规则为工况号_断面号_图片编号.关闭软件后,将生成的abaqus.rpy文件改名为print.py,打开该文件,对其中操作过程中无用的信息进行删除和更改,精简脚本文件可以提高软件运行速度.将需要用到的odb文件、py文件及编制程序生成的exe文件放在一个文件夹下,双击exe文件,即可在该目录下迅速产生各工况的图形文件.

3.2.2结果分析

程序截图效率高,且图片样式大小一致,整齐划一.本文选取了断面1的工况1和工况3两种不同工况下的计算结果截图进行对比,结果如图4所示.首先,从外观上可以看出,不同工况下断面1的衬砌受力图、钢筋受力图及围岩受力图和塑性开展图等,大都对称美观,形状、样式及图例等规律一致,程序运行傻瓜式操作,不需要进行额外的控制,简单、方便、准确度高.

图4 程序截图结果

工况1是运行期+汛期雨季,工况3是运行期+汛期暴雨.两种工况都是运行期工况,两者的差别在于考虑的外水头不同,也就是汛期暴雨工况下衬砌承受的外水压力大于汛期雨季工况下衬砌的外水压力.从图4中可以看出,工况1和工况3的计算结果分布规律一致.工况1情况下,围岩的竖向沉降量最大值为9.7cm左右,发生在拱底部位;最大压力为73.2 MPa,在左拱脚及右拱肩附近有应力集中现象;衬砌最大拉应力为1.1 MPa,发生在拱脚部位;钢筋最大拉应力为95.8 MPa左右.工况3情况下,围岩的竖向沉降量最大值为9.8 cm左右,发生在拱底部位;最大压力为73.3 MPa,在左拱脚及右拱肩附近有应力集中现象;衬砌最大拉应力为1.3 MPa,发生在拱脚部位;钢筋最大压应力为114 MPa左右.工况3的计算结果与工况1在规律上是一致的,但在数值有差别.主要表现在围岩的位移及应力和塑性区开展深度等在工况3时比工况1略有增加,但幅度不大.而衬砌应力及钢筋应力值等在工况3时比工况1时增加较为明显,这也充分说明了外水压力的作用,外水压力增加对于围岩稳定的影响是很小的,但外水压力增大对于衬砌结构影响则较为明显.所以,外水压力是衬砌结构承受的重要荷载.这与实际规律是一致的,由此也进一步验证了截图程序的可靠性.

4结论

语言在大型有限元软件ABAQUS后处理中的应用,并基于此编写了批处理Fortran程序,将ABAQUS作为一个计算模块嵌入所编写的程序之中,成功实现了截图工作的批量化处理,提高了工作效率.

2)将该批量截图技术应用于西南某引水隧洞工程的后处理过程中,批量处理自动化程序快速实现了以往人工截图数天的工作量,截图工作不仅效率高,而且图片大小一致,美观大方.实际工程应用表明,批量截图技术具有快速高效、通用可靠等优点.

3)现有程序仅对截图的批量处理有效、把建模、提交有限元计算及后处理统一起来,并自动生成项目报告,提高工作效率,是下一步的研究工作.

参考文献:

[1]司海宝,蔡正银.基于ABAQUS建立土体本构模型库的研究[J].岩土力学,2011(2):599-603.

[2]钟同圣,卫丰,王鸷,等.Python语言和ABAQUS前处理二次开发[J].郑州大学学报:理学版,2006(1):60-64.

[3]李慧,孙银茹.基于PYTHON的ABAQUS后处理开发[J].中小企业管理与科技(上旬刊),2010(6):268-269.

[4]张强,马永,李四超.基于Python的ABAQUS二次开发方法与应用[J].舰船电子工程,2011(2):131-134.

[5]徐远杰,王观琪,李健,等.在ABAQUS中开发实现Duncan-Chang本构模型[J].岩土力学,2004(7):1032-1036.

[6]杨曼娟.ABAQUS用户材料子程序开发及应用[D].武汉:华中科技大学,2005.

[7]陈卫忠,伍国军,贾善坡.ABAQUS在隧道及地下工程中的应用[M].北京:中国水利水电出版社,2003.

[责任编辑王康平]

Technology of Saving ABAQUS Pictures in Batch and

Its Application to Long Deep Tunnel

Zhang DaofaZhang Jixun

(College of Water Conservancy & Hydropower Engineering, Hohai Univ., Nanjing 210098, China)

AbstractThe long deep tunnel has lots of calculation cases and typical sections because of its internal complexity and particularity. The work of saving pictures after calculating with the finite element method is too heavy. While the technology of saving pictures in batch saves time and energy. Based on the practical way, the technology was realized in the platform of ABAQUS. The relative Fortran program was made and applied to a project in Southwest China. The results show that this technology is general, reliable, accurate and fast, which improves the efficiency significantly.

Keywordslong deep tunnel;ABAQUS;saving pictures in batch;Fortran program; script file

基金项目:国家自然科学基金面上项目(编号51478166);教育部留学回国人员科研启动基金资助项目;中央高校基本科研业务费专项资金资助(编号2015B06014)

收稿日期:2015-09-03

中图分类号:TV35

文献标识码:A

文章编号:1672-948X(2015)06-0056-04

DOI:10.13393/j.cnki.issn.1672-948X.2015.06.012

通信作者:张道法(1990-),男,硕士,研究方向为水工结构.E-mail:1157738225@qq.com