APP下载

基于C#语言的ABAQUS二次开发及其在边坡稳定性计算中的应用

2022-03-13吴子牛王莎卢欣奇

黄金 2022年2期
关键词:边坡稳定性二次开发语言

吴子牛 王莎 卢欣奇

摘要:ABAQUS软件界面操作复杂,且前后数据处理需花费大量时间,针对以上问题,采用C#语言对ABAQUS进行二次开发,突破传统的单纯使用Python脚本配合ABAQUS内置GUI插件工具箱开发的局限性,利用C#语言编写程序,直接调用ABAQUS求解器,实现在不打开软件界面的情况下进行计算并读取结果,并将强度折减系数显示在WinForm窗体程序上。开发后的系统大大简化了ABAQUS中求解特定岩土边坡工程问题的复杂操作,降低了软件操作难度。

关键词:ABAQUS;二次开发;C#语言;边坡稳定性;强度折减法

中图分类号:TD76

文献标志码:A

文章编号:1001-1277(2022)02-0061-04

doi:10.11792/hj20220211

引 言

边坡是岩土工程的重要组成部分,对边坡稳定性分析的研究历来是岩土工程界的重点和难点课题。随着数值模拟技术的发展,基于有限单元法的强度折减技术在边坡稳定性分析中得到了广泛的应用[1]。ABAQUS作为大型通用有限元分析软件的一种,在求解非线性问题方面十分优秀,在模拟岩土工程高度非线性问题中,具有优秀的分析能力和模拟复杂系统的可靠性。因此,工程界常将ABAQUS用于岩土工程的边坡问题分析[2]。

虽然ABAQUS拥有强大的计算分析功能,但其在实际应用过程中却对操作人员的经验技巧有一定的要求。首先,ABAQUS操作建模界面非常复杂,操作十分繁琐,前处理需要花费大量时间;其次,由于其计算结果种类众多,显示类型丰富,提取所需结果需要大量后处理操作。基于以上两点,导致大部分初学者无法在短时间内熟练操作软件,同时在实际工程应用中也需要花费大量的时间用于各类参数调整。

对于上述在计算前后数据处理时遇到的问题,本文探讨利用C#语言和WinForm窗体程序,配合ABAQUS优秀的二次开发特性,编写开发友好的图形用户界面,简化利用ABAQUS进行边坡稳定性分析计算强度折减系数的操作,提升软件易用性和便利性。

1 传统ABAQUS二次开发简介

ABAQUS仅提供了基于Python脚本的二次开发接口,其在继承Python自身函数库的基础上,又对函数库进行了进一步的扩展,使用户通过操作调用这些函数,可以跳过ABAQUS/CEA界面直接操作其运算内核,实现快速计算处理。由于选择了Python语言作为操作脚本,ABAQUS软件可以通过以下多种方式与自身內核进行交互:图形用户界面(GUI)、界面窗体下部命令行接口(CLI)、Python脚本(Script)[3-5],命令流和ABAQUS/CEA内核关系如图1所示。

使用ABAQUS自带的RSG对话框构造器(RSG dialog Builder)创建ABAQUS GUI插件程序有其自身的局限性。首先,插件程序只是一个依附于ABAQUS/CEA界面的悬挂式工具,其使用仍然需要打开主软件界面,同时由于ABAQUS软件占用内存较大,打开界面需要占用大量时间和电脑内存,会降低提交计算分析的速度;其次,虽然ABAQUS可以编写GUI插件程序简化建模操作,但是对于初学者或是缺少相关领域专业知识的非专业从业者来说,计算完成后的后处理及找到并提取需要的计算结果(如安全系数等)又是一大难点。

2 基于C#语言的ABAQUS二次开发

2.1 开发技术路线

C#是微软公司开发的一种面向对象的编程语言,用其编写的WinForm窗体程序运行在Windows操作系统下,具有速度快、效率高等特点。结合传统开发思路存在的问题和局限性,运用C#语言编写WinForm窗体程序,跳过ABAQUS/CEA界面直接将建模参数传送给ABAQUS求解器,从而实现只需要打开WinForm窗体程序,输入用于建立边坡模型的几何和物理力学参数,通过计算就可以直接在窗体程序上显示计算好的强度折减系数,达到不打开ABAQUS软件也可操作其进行模拟计算的目的,使本行业外的非专业人士也能操作专业模拟软件。

由于ABAQUS只提供了Python语言的二次开发接口,没有提供能够利用C#语言在.NET平台下开发设计的通用程序接口和函数。因此,核心问题就是解决使用C#语言编写WinForm窗体程序和实现ABAQUS软件数据通信。

在Windows操作系统下,打开ABAQUS软件可以使用系统自带的命令提示符cmd.exe,在Windows命令提示符的控制台中输入命令:Abaqus cae noGUI =*.py,即可直接命令ABAQUS软件运行指定的Python脚本,同时不需要打开ABAQUS/CEA界面。因此,可以将Python脚本作为数据沟通的中间桥梁,使用C#语言编写的WinForm窗体程序修改预设好的Python脚本模板,再通过调用计算机进程,启动命令控制符,控制ABAQUS软件运行修改好的指定脚本代码,计算结束后再将计算结果打印输出到WinForm窗体程序上,软件运行流程如图2所示。

2.2 Python脚本编写思路

将Python脚本文件作为数据交流的中间媒介,利用WinForm窗体程序把该脚本文件当作文本文件,以字符串形式进行读写修改。为了方便修改,可以将Python脚本文件中的代码写成一个函数,预留需要输入的参数,后续可以直接在脚本文件最后添加运行特定参数的函数代码,令ABAQUS读取运行,便可计算得出结果,解决C#语言无法直接操作ABAQUS的问题。

所有Python代码都写在名为CalSafety_factor的函数中,函数参数包括:地基宽、地基高、边坡下底宽、边坡上底宽、边坡高度、边坡土体容重、内聚力、内摩擦角、弹性模量、泊松比。函数代码主要包括7个部分:创建划分模型,设置材料属性,装配,设置分析步,设置载荷边界条件,网格划分(内置默认:网格单元形状(Element sharp)为四边形(Quad),划分技术(Technique)为扫略(sweep),网格宽度为1单位),任务和提交(内置默认:强度折减系数K取0.5~2)。

2.3 软件编程思路和代码

通过C#语言编写的WinForm窗体程序,提供给使用者界面交互。通过预留文本框让用户输入建模所需的几何和物理力学参数。设置按钮控件,通过按钮的Button_Click点击事件,触发计算,最终将计算结果(强度折减系数)用label标签控件显示在此界面上。

编程思路如下:

1)创建以Result命名的文件夹,在其中创建不同的以时间命名的文件夹,用于存放修改好的Python脚本和计算结果。通过用户输入数据给Python脚本模板中添加包含指定参数的代码触发函数运行,同时添加输出结果的代码,将计算结果(强度折减系数)打印在Python脚本文件最后的注释中,最后将脚本存放在特定文件夹中。

2)通过创建Process类型对象启动Windows命令控制台程序。通过cmd.exe命令控制符找到指定文件夹中改写好的文件,并通过Abaqus cae noGUI = *.py命令控制ABAQUS软件运行指定脚本,进行计算。

3)计算完成后,读取打印在Python脚本文件注释中的结果(强度折减系数),将其显示在WinForm窗体程序的界面上。

3 边坡稳定性算例分析

3.1 强度折减有限元法基本原理

强度折减有限元法是由ZIENKIEWICZ等[6]提出的一种边坡稳定性分析方法,其基本原理是将边坡强度参数中的初始内聚力(C)和内摩擦角(φ)同时除以一个强度折减系数(K),得到一组新的强度参数值;然后以这组新参数值作为输入参数进行有限元计算。通过不断改变强度折减系数,反复代入,循环计算[7],当计算至边坡达到极限平衡状态时,对应的强度折减系数值就可以认为是边坡的最小安全系数,发生破坏的滑动面就是最危险的滑动面。郑宏等[8]讨论了边坡稳定有限元分析中安全系数的定义问题,指出了强度折减有限元法的合理性。

折减后的边坡强度参数中的初始内聚力(C′)和内摩擦角(φ′)可分别用式(1)、式(2)求得[6]。

3.2 可靠性验证

此处选择的算例是DAWSON等[9](1999)分析的一个均质边坡。确定以下参数:地基宽(Foundation_Length),地基高(Foundation_Height),边坡上底宽(slope_topLen),边坡下底宽(slope_bottomLen),边坡高度(slope_height),边坡土体容重(Volumetric_weight),内聚力(Cohesion),内摩擦角,弹性模量(Elastic),泊松比(Poisson)。具体参数值如表1所示,边坡几何要素如图3所示,其两边和底部有位移边界。

通过启动WinForm窗体程序,输入指定参数,点击计算,计算得出的强度折减系数显示在软件界面上,如图4所示。

通过ABAQUS软件自带的云图查看功能,检验计算结果的可靠性,计算最大塑性应变分布云图如图5所示,场变量Fv1强度折减系数云图如图6所示。通过ABAQUS打开计算结果文件,查询得知此算例在运行到第二个分析步的0.371 831 s时无法计算收敛,计算停止。由于强度折减系数的不断迭代增大,导致边坡强度参数中的内聚力和内摩擦角逐渐减小,最终导致边坡不稳,发生滑坡。

结合云图计算结果可知,滑裂面位置和形状合理,安全系數计算结果近似等于1.0,与Dawson分析结果一致,因此,二次开发系统计算结果理想可靠。

4 结 语

本文针对ABAQUS软件前、后处理复杂的问题,采用C#语言编写WinForm窗体程序,通过计算机进程启动命令提示符达到对ABAQUS软件的控制和调用,使其读取指定的Python脚本,并实现计算结果直接在WinForm窗体程序界面显示的功能。通过自编程序进行二次开发,在计算岩土边坡问题时,省略了打开ABAQUS软件操作CEA界面的复杂过程,大大降低了有限元软件的使用难度。

[参 考 文 献]

[1] 夏园园.基于ABAQUS有限元强度折减法的边坡稳定性分析[J].价值工程,2018,37(31):198-202.

[2] 费康,彭劼.ABAQUS岩土工程实例详解[M].北京:人民邮电出版社,2017.

[3] 贾利勇,富琛阳子,贺高,等.Abaqus GUI程序开发指南PYTHON语言[M].北京:人民邮电出版社,2016.

[4] 谢瑞敏,王雪军.基于Python的ABAQUS二次开发应用[J].中国水运(下半月),2017,17(10):77-79.

[5] 曹金凤,王旭春,孔亮.Python语言在Abaqus中的应用[M].北京:机械工业出版社,2011.

[6] ZIENKIEWICZ O C,HUMPHESON C,LEWIS R W.Associated and non-associated visco-plasticity and plasticity in soil mechanics[J].Geotechnique,1975,25(4):671-689.

[7] 闫俊维,王曙光,陈静瑜.ABAQUS强度折减法在边坡稳定性分析中的应用[J].西部交通科技,2015(8):21-24.

[8] 郑宏,田斌,刘德富,等.关于有限元边坡稳定性分析中安全系数的定义问题[J].岩石力学与工程学报,2005,24(13):2 225-2 230.

[9] DAWSON E M,ROTH W H,DRESCHER A.Slope staility analysis by strength reduction[J].Geotechnique,1999,49(6):835-840.

3392500338263

猜你喜欢

边坡稳定性二次开发语言
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
例谈课本习题的“二次开发”
某水电站混凝土生产系统边坡稳定性复核分析
某边坡地质灾害隐患点治理工程勘查
我有我语言
语言的将来
Action Speaks Louder Than Words 你对肢体语言了解多少
有趣的语言