吳子牛 王莎 盧欣奇
摘要:ABAQUS軟件界面操作復(fù)雜,且前后數(shù)據(jù)處理需花費大量時間,針對以上問題,采用C#語言對ABAQUS進(jìn)行二次開發(fā),突破傳統(tǒng)的單純使用Python腳本配合ABAQUS內(nèi)置GUI插件工具箱開發(fā)的局限性,利用C#語言編寫程序,直接調(diào)用ABAQUS求解器,實現(xiàn)在不打開軟件界面的情況下進(jìn)行計算并讀取結(jié)果,并將強度折減系數(shù)顯示在WinForm窗體程序上。開發(fā)后的系統(tǒng)大大簡化了ABAQUS中求解特定巖土邊坡工程問題的復(fù)雜操作,降低了軟件操作難度。
關(guān)鍵詞:ABAQUS;二次開發(fā);C#語言;邊坡穩(wěn)定性;強度折減法
中圖分類號:TD76
文獻(xiàn)標(biāo)志碼:A
文章編號:1001-1277(2022)02-0061-04
doi:10.11792/hj20220211
引 言
邊坡是巖土工程的重要組成部分,對邊坡穩(wěn)定性分析的研究歷來是巖土工程界的重點和難點課題。隨著數(shù)值模擬技術(shù)的發(fā)展,基于有限單元法的強度折減技術(shù)在邊坡穩(wěn)定性分析中得到了廣泛的應(yīng)用[1]。ABAQUS作為大型通用有限元分析軟件的一種,在求解非線性問題方面十分優(yōu)秀,在模擬巖土工程高度非線性問題中,具有優(yōu)秀的分析能力和模擬復(fù)雜系統(tǒng)的可靠性。因此,工程界常將ABAQUS用于巖土工程的邊坡問題分析[2]。
雖然ABAQUS擁有強大的計算分析功能,但其在實際應(yīng)用過程中卻對操作人員的經(jīng)驗技巧有一定的要求。首先,ABAQUS操作建模界面非常復(fù)雜,操作十分繁瑣,前處理需要花費大量時間;其次,由于其計算結(jié)果種類眾多,顯示類型豐富,提取所需結(jié)果需要大量后處理操作?;谝陨蟽牲c,導(dǎo)致大部分初學(xué)者無法在短時間內(nèi)熟練操作軟件,同時在實際工程應(yīng)用中也需要花費大量的時間用于各類參數(shù)調(diào)整。
對于上述在計算前后數(shù)據(jù)處理時遇到的問題,本文探討利用C#語言和WinForm窗體程序,配合ABAQUS優(yōu)秀的二次開發(fā)特性,編寫開發(fā)友好的圖形用戶界面,簡化利用ABAQUS進(jìn)行邊坡穩(wěn)定性分析計算強度折減系數(shù)的操作,提升軟件易用性和便利性。
1 傳統(tǒng)ABAQUS二次開發(fā)簡介
ABAQUS僅提供了基于Python腳本的二次開發(fā)接口,其在繼承Python自身函數(shù)庫的基礎(chǔ)上,又對函數(shù)庫進(jìn)行了進(jìn)一步的擴展,使用戶通過操作調(diào)用這些函數(shù),可以跳過ABAQUS/CEA界面直接操作其運算內(nèi)核,實現(xiàn)快速計算處理。由于選擇了Python語言作為操作腳本,ABAQUS軟件可以通過以下多種方式與自身內(nèi)核進(jìn)行交互:圖形用戶界面(GUI)、界面窗體下部命令行接口(CLI)、Python腳本(Script)[3-5],命令流和ABAQUS/CEA內(nèi)核關(guān)系如圖1所示。
使用ABAQUS自帶的RSG對話框構(gòu)造器(RSG dialog Builder)創(chuàng)建ABAQUS GUI插件程序有其自身的局限性。首先,插件程序只是一個依附于ABAQUS/CEA界面的懸掛式工具,其使用仍然需要打開主軟件界面,同時由于ABAQUS軟件占用內(nèi)存較大,打開界面需要占用大量時間和電腦內(nèi)存,會降低提交計算分析的速度;其次,雖然ABAQUS可以編寫GUI插件程序簡化建模操作,但是對于初學(xué)者或是缺少相關(guān)領(lǐng)域?qū)I(yè)知識的非專業(yè)從業(yè)者來說,計算完成后的后處理及找到并提取需要的計算結(jié)果(如安全系數(shù)等)又是一大難點。
2 基于C#語言的ABAQUS二次開發(fā)
2.1 開發(fā)技術(shù)路線
C#是微軟公司開發(fā)的一種面向?qū)ο蟮木幊陶Z言,用其編寫的WinForm窗體程序運行在Windows操作系統(tǒng)下,具有速度快、效率高等特點。結(jié)合傳統(tǒng)開發(fā)思路存在的問題和局限性,運用C#語言編寫WinForm窗體程序,跳過ABAQUS/CEA界面直接將建模參數(shù)傳送給ABAQUS求解器,從而實現(xiàn)只需要打開WinForm窗體程序,輸入用于建立邊坡模型的幾何和物理力學(xué)參數(shù),通過計算就可以直接在窗體程序上顯示計算好的強度折減系數(shù),達(dá)到不打開ABAQUS軟件也可操作其進(jìn)行模擬計算的目的,使本行業(yè)外的非專業(yè)人士也能操作專業(yè)模擬軟件。
由于ABAQUS只提供了Python語言的二次開發(fā)接口,沒有提供能夠利用C#語言在.NET平臺下開發(fā)設(shè)計的通用程序接口和函數(shù)。因此,核心問題就是解決使用C#語言編寫WinForm窗體程序和實現(xiàn)ABAQUS軟件數(shù)據(jù)通信。
在Windows操作系統(tǒng)下,打開ABAQUS軟件可以使用系統(tǒng)自帶的命令提示符cmd.exe,在Windows命令提示符的控制臺中輸入命令:Abaqus cae noGUI =*.py,即可直接命令A(yù)BAQUS軟件運行指定的Python腳本,同時不需要打開ABAQUS/CEA界面。因此,可以將Python腳本作為數(shù)據(jù)溝通的中間橋梁,使用C#語言編寫的WinForm窗體程序修改預(yù)設(shè)好的Python腳本模板,再通過調(diào)用計算機進(jìn)程,啟動命令控制符,控制ABAQUS軟件運行修改好的指定腳本代碼,計算結(jié)束后再將計算結(jié)果打印輸出到WinForm窗體程序上,軟件運行流程如圖2所示。
2.2 Python腳本編寫思路
將Python腳本文件作為數(shù)據(jù)交流的中間媒介,利用WinForm窗體程序把該腳本文件當(dāng)作文本文件,以字符串形式進(jìn)行讀寫修改。為了方便修改,可以將Python腳本文件中的代碼寫成一個函數(shù),預(yù)留需要輸入的參數(shù),后續(xù)可以直接在腳本文件最后添加運行特定參數(shù)的函數(shù)代碼,令A(yù)BAQUS讀取運行,便可計算得出結(jié)果,解決C#語言無法直接操作ABAQUS的問題。
所有Python代碼都寫在名為CalSafety_factor的函數(shù)中,函數(shù)參數(shù)包括:地基寬、地基高、邊坡下底寬、邊坡上底寬、邊坡高度、邊坡土體容重、內(nèi)聚力、內(nèi)摩擦角、彈性模量、泊松比。函數(shù)代碼主要包括7個部分:創(chuàng)建劃分模型,設(shè)置材料屬性,裝配,設(shè)置分析步,設(shè)置載荷邊界條件,網(wǎng)格劃分(內(nèi)置默認(rèn):網(wǎng)格單元形狀(Element sharp)為四邊形(Quad),劃分技術(shù)(Technique)為掃略(sweep),網(wǎng)格寬度為1單位),任務(wù)和提交(內(nèi)置默認(rèn):強度折減系數(shù)K取0.5~2)。
2.3 軟件編程思路和代碼
通過C#語言編寫的WinForm窗體程序,提供給使用者界面交互。通過預(yù)留文本框讓用戶輸入建模所需的幾何和物理力學(xué)參數(shù)。設(shè)置按鈕控件,通過按鈕的Button_Click點擊事件,觸發(fā)計算,最終將計算結(jié)果(強度折減系數(shù))用label標(biāo)簽控件顯示在此界面上。
編程思路如下:
1)創(chuàng)建以Result命名的文件夾,在其中創(chuàng)建不同的以時間命名的文件夾,用于存放修改好的Python腳本和計算結(jié)果。通過用戶輸入數(shù)據(jù)給Python腳本模板中添加包含指定參數(shù)的代碼觸發(fā)函數(shù)運行,同時添加輸出結(jié)果的代碼,將計算結(jié)果(強度折減系數(shù))打印在Python腳本文件最后的注釋中,最后將腳本存放在特定文件夾中。
2)通過創(chuàng)建Process類型對象啟動Windows命令控制臺程序。通過cmd.exe命令控制符找到指定文件夾中改寫好的文件,并通過Abaqus cae noGUI = *.py命令控制ABAQUS軟件運行指定腳本,進(jìn)行計算。
3)計算完成后,讀取打印在Python腳本文件注釋中的結(jié)果(強度折減系數(shù)),將其顯示在WinForm窗體程序的界面上。
3 邊坡穩(wěn)定性算例分析
3.1 強度折減有限元法基本原理
強度折減有限元法是由ZIENKIEWICZ等[6]提出的一種邊坡穩(wěn)定性分析方法,其基本原理是將邊坡強度參數(shù)中的初始內(nèi)聚力(C)和內(nèi)摩擦角(φ)同時除以一個強度折減系數(shù)(K),得到一組新的強度參數(shù)值;然后以這組新參數(shù)值作為輸入?yún)?shù)進(jìn)行有限元計算。通過不斷改變強度折減系數(shù),反復(fù)代入,循環(huán)計算[7],當(dāng)計算至邊坡達(dá)到極限平衡狀態(tài)時,對應(yīng)的強度折減系數(shù)值就可以認(rèn)為是邊坡的最小安全系數(shù),發(fā)生破壞的滑動面就是最危險的滑動面。鄭宏等[8]討論了邊坡穩(wěn)定有限元分析中安全系數(shù)的定義問題,指出了強度折減有限元法的合理性。
折減后的邊坡強度參數(shù)中的初始內(nèi)聚力(C′)和內(nèi)摩擦角(φ′)可分別用式(1)、式(2)求得[6]。
3.2 可靠性驗證
此處選擇的算例是DAWSON等[9](1999)分析的一個均質(zhì)邊坡。確定以下參數(shù):地基寬(Foundation_Length),地基高(Foundation_Height),邊坡上底寬(slope_topLen),邊坡下底寬(slope_bottomLen),邊坡高度(slope_height),邊坡土體容重(Volumetric_weight),內(nèi)聚力(Cohesion),內(nèi)摩擦角,彈性模量(Elastic),泊松比(Poisson)。具體參數(shù)值如表1所示,邊坡幾何要素如圖3所示,其兩邊和底部有位移邊界。
通過啟動WinForm窗體程序,輸入指定參數(shù),點擊計算,計算得出的強度折減系數(shù)顯示在軟件界面上,如圖4所示。
通過ABAQUS軟件自帶的云圖查看功能,檢驗計算結(jié)果的可靠性,計算最大塑性應(yīng)變分布云圖如圖5所示,場變量Fv1強度折減系數(shù)云圖如圖6所示。通過ABAQUS打開計算結(jié)果文件,查詢得知此算例在運行到第二個分析步的0.371 831 s時無法計算收斂,計算停止。由于強度折減系數(shù)的不斷迭代增大,導(dǎo)致邊坡強度參數(shù)中的內(nèi)聚力和內(nèi)摩擦角逐漸減小,最終導(dǎo)致邊坡不穩(wěn),發(fā)生滑坡。
結(jié)合云圖計算結(jié)果可知,滑裂面位置和形狀合理,安全系數(shù)計算結(jié)果近似等于1.0,與Dawson分析結(jié)果一致,因此,二次開發(fā)系統(tǒng)計算結(jié)果理想可靠。
4 結(jié) 語
本文針對ABAQUS軟件前、后處理復(fù)雜的問題,采用C#語言編寫WinForm窗體程序,通過計算機進(jìn)程啟動命令提示符達(dá)到對ABAQUS軟件的控制和調(diào)用,使其讀取指定的Python腳本,并實現(xiàn)計算結(jié)果直接在WinForm窗體程序界面顯示的功能。通過自編程序進(jìn)行二次開發(fā),在計算巖土邊坡問題時,省略了打開ABAQUS軟件操作CEA界面的復(fù)雜過程,大大降低了有限元軟件的使用難度。
[參 考 文 獻(xiàn)]
[1] 夏園園.基于ABAQUS有限元強度折減法的邊坡穩(wěn)定性分析[J].價值工程,2018,37(31):198-202.
[2] 費康,彭劼.ABAQUS巖土工程實例詳解[M].北京:人民郵電出版社,2017.
[3] 賈利勇,富琛陽子,賀高,等.Abaqus GUI程序開發(fā)指南PYTHON語言[M].北京:人民郵電出版社,2016.
[4] 謝瑞敏,王雪軍.基于Python的ABAQUS二次開發(fā)應(yīng)用[J].中國水運(下半月),2017,17(10):77-79.
[5] 曹金鳳,王旭春,孔亮.Python語言在Abaqus中的應(yīng)用[M].北京:機械工業(yè)出版社,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強度折減法在邊坡穩(wěn)定性分析中的應(yīng)用[J].西部交通科技,2015(8):21-24.
[8] 鄭宏,田斌,劉德富,等.關(guān)于有限元邊坡穩(wěn)定性分析中安全系數(shù)的定義問題[J].巖石力學(xué)與工程學(xué)報,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