程江濤
(中化地質(zhì)礦山總局湖北地質(zhì)勘查院 武漢 430080)
地質(zhì)體三維數(shù)值模型的建立是進(jìn)行巖土工程與工程地質(zhì)問(wèn)題數(shù)值模擬分析的前提。由美國(guó)Itasca公司開(kāi)發(fā)的FLAC3D軟件能有效模擬巖土介質(zhì)的三維力學(xué)行為[1],但該軟件在復(fù)雜模型建立及單元網(wǎng)格劃分等前處理問(wèn)題上存在明顯不足。首先,該軟件只能用自帶的12種初始單元模型進(jìn)行建模;其次,該軟件在建模時(shí)采用數(shù)據(jù)/命令行文件方式,不僅需花費(fèi)大量時(shí)間,而且人機(jī)交互性不強(qiáng),存在建模難度大的問(wèn)題。國(guó)內(nèi)外一些學(xué)者針對(duì)FLAC3D前處理不足問(wèn)題開(kāi)展了一些研究工作[2],但大多數(shù)研究都集中在復(fù)雜的數(shù)據(jù)前處理方面,集成化和智能化的程度不足。
針對(duì)上述問(wèn)題,本文試圖以Visual Basic為控制平臺(tái),以CAD、Surfer、ANSYS、FLAC3D4種軟件的接口技術(shù)與二次開(kāi)發(fā)技術(shù)為基礎(chǔ),構(gòu)建基于DSAF集成系統(tǒng)的滑坡三維動(dòng)態(tài)建模平臺(tái)。在此基礎(chǔ)上,以數(shù)據(jù)文件為傳輸媒介,實(shí)現(xiàn)DSAF集成系統(tǒng)的無(wú)縫連接,開(kāi)發(fā)滑坡三維動(dòng)態(tài)建模DSAF系統(tǒng)。
滑坡三維建??筛呕癁榛才c滑體實(shí)體模型構(gòu)建與網(wǎng)格劃分2個(gè)關(guān)鍵步驟。如何利用已有的地形信息和鉆孔信息資料實(shí)現(xiàn)上述2個(gè)關(guān)鍵步驟是滑坡三維動(dòng)態(tài)建模的關(guān)鍵。為此,本研究從集成化的角度出發(fā),以CAD、Surfer、ANSYS、FLAC3D4種軟件在建模前處理中的特點(diǎn)構(gòu)建了滑坡三維動(dòng)態(tài)建模DSAF集成系統(tǒng),見(jiàn)圖1。
圖1 滑坡三維動(dòng)態(tài)建模DSAF集成系統(tǒng)結(jié)構(gòu)圖
首先,通過(guò)前處理DXF文件提取滑坡三維建模原始數(shù)據(jù);然后,導(dǎo)入Surfer軟件進(jìn)行網(wǎng)格化插值形成地形和滑面空間曲面網(wǎng)格數(shù)據(jù)文件;在此基礎(chǔ)上,利用APDL二次開(kāi)發(fā)語(yǔ)言形成滑坡實(shí)體網(wǎng)格建模命令流,導(dǎo)入ANSYS軟件形成滑坡三維實(shí)體網(wǎng)格模型,生成單元信息數(shù)據(jù)文件和單元節(jié)點(diǎn)坐標(biāo)數(shù)據(jù)文件;最后,利用Fish二次開(kāi)發(fā)語(yǔ)言形成模型轉(zhuǎn)換命令流,導(dǎo)入FLAC3D生成滑坡三維數(shù)值模型。
滑坡三維地質(zhì)建模所需的原始數(shù)據(jù)主要由地形信息數(shù)據(jù)、滑坡周界空間數(shù)據(jù)及控制點(diǎn)(鉆孔)信息數(shù)據(jù)3部分構(gòu)成,以上3種數(shù)據(jù)均可從CAD處理后的DXF文件中獲取。
1.2.1DXF文件結(jié)構(gòu)
1個(gè)完整的DXF文件一般由4個(gè)段(HEADER段、TABLES段、BLOCKS段、ENTITIES段)和1個(gè)文件尾組成[3]。其中ENTITIES段記錄了CAD圖形中每個(gè)圖形對(duì)象的名稱、所在的圖層名稱、線型名、顏色號(hào)、基面高度、厚度,以及有關(guān)的幾何數(shù)據(jù),是提取建模信息數(shù)據(jù)的關(guān)鍵段。
DXF文件本質(zhì)上由一系列組碼和組值組成。每個(gè)段由若干個(gè)組碼和組值對(duì)組成,每個(gè)組對(duì)在DXF文件中占2行,第1行為組碼,第2行為組值。DXF文件每個(gè)段均以1個(gè)組碼為0,組值為SECTION的字符串開(kāi)始;以1個(gè)組碼為0,組值為ENDSEC的字符串結(jié)束。整個(gè)DXF文件以1個(gè)組碼0,組值為EOF的字符串結(jié)束。在滑坡建模原始數(shù)據(jù)提取過(guò)程中所使用的主要組碼及含義見(jiàn)表1。
表1 DXF文件常用組碼及其含義
1.2.2DXF文件讀取與控制
滑坡三維地質(zhì)建模需獲取3種不同類(lèi)型的原始數(shù)據(jù),為此需在CAD模型下設(shè)置相應(yīng)的圖層及實(shí)體圖元進(jìn)行控制性讀取。對(duì)于地形信息數(shù)據(jù)而言,CAD模式下默認(rèn)的實(shí)體圖元類(lèi)型為二維多義線AcDbPolyline;對(duì)于滑坡周界信息數(shù)據(jù)及控制點(diǎn)信息數(shù)據(jù)而言,可用三維多義線沿等高線切取,形成三維多義線AcDb3dPolylineVertex實(shí)體圖元類(lèi)型。在CAD前處理完成的基礎(chǔ)上,即可通過(guò)設(shè)置的圖層名和實(shí)體圖元類(lèi)型2個(gè)控制變量讀取上述3種類(lèi)型的原始數(shù)據(jù)。
通過(guò)DXF文件提取的等高線節(jié)點(diǎn)數(shù)據(jù)即可形成地形信息數(shù)據(jù)文件,通過(guò)滑坡周界空間數(shù)據(jù)及控制點(diǎn)信息數(shù)據(jù)即可形成滑面信息數(shù)據(jù)文件。由于從DXF文件提取的信息數(shù)據(jù)空間離散性較大,不利于建模軟件形成連續(xù)的空間曲面,為此需對(duì)提取的原始信息數(shù)據(jù)進(jìn)行網(wǎng)格化插值,以形成連續(xù)的空間曲面數(shù)據(jù)。
Surfer作為專(zhuān)用的地形處理軟件,具有強(qiáng)大的插值功能,提供了12種插值函數(shù),能迅速地將離散點(diǎn)數(shù)據(jù)通過(guò)網(wǎng)格化插值轉(zhuǎn)換為連續(xù)的曲面數(shù)據(jù)。為此,可通過(guò)VB與Surfer的無(wú)縫連接,調(diào)用Surfer Kriging空間插值函數(shù)構(gòu)建地形與滑面空間曲面數(shù)據(jù),其關(guān)鍵步驟如下:
‘創(chuàng)建ActiveX對(duì)象
Dim SurferApp As Surfer.Application
Set SurferApp=CreateObject(“Surfer.Application”)
‘Kriging網(wǎng)格化插值生成方法
SurferApp.GridData(InFile, NumCols, NumRows, SrfKriging, OutFile, SrfGridFmtXYZ)
其中:InFile為輸入的數(shù)據(jù)文件名(地形或滑面信息數(shù)據(jù)文件);NumCols、NumRows為插值網(wǎng)格的列數(shù)和行數(shù);SrfKriging為Kriging網(wǎng)格化插值方法;OutFile為輸出的網(wǎng)格化數(shù)據(jù)文件名;SrfGridFmtX、Y、Z為輸出的數(shù)據(jù)格式(X、Y、Z坐標(biāo))。
1.4.1滑坡三維實(shí)體網(wǎng)格模型構(gòu)建方法
滑坡三維實(shí)體網(wǎng)格模型構(gòu)的關(guān)鍵點(diǎn)是滑床與滑體三維實(shí)體模型的構(gòu)建及其網(wǎng)格劃分,其實(shí)現(xiàn)具體步驟如下。
1) 地形三維實(shí)體模型構(gòu)建。①按行提取網(wǎng)格化地形數(shù)據(jù)文件中網(wǎng)格節(jié)點(diǎn)的三維坐標(biāo),形成關(guān)鍵點(diǎn),并用樣條函數(shù)擬合該行上所有關(guān)鍵點(diǎn),形成樣條線;②將所生成的樣條線利用ANSYS蒙皮技術(shù)形成地形曲面;③通過(guò)設(shè)置的模型底部高程、地形曲面邊界線以及拐點(diǎn)坐標(biāo),形成模型左右側(cè)面、前后側(cè)面及底面。
2) 滑體與滑床三維實(shí)體模型構(gòu)建。①將Surfer網(wǎng)格化的滑面數(shù)據(jù)形成滑面空間曲面;②利用滑坡周界在Z方向上的投影點(diǎn)數(shù)據(jù)形成封閉的二維曲面(X、Y方向),并利用ANSYS拉伸技術(shù),將該二維曲面拉伸成空間柱體,進(jìn)而利用ANSYS布爾操作,用滑面曲面切割該柱體形成上下隔離體;③利用體切割技術(shù),用上隔離體切割地形三維實(shí)體模型形成滑體與滑床三維實(shí)體模型。
3) 滑體與滑床實(shí)體模型網(wǎng)格劃分。①設(shè)置滑體與滑床各自的單元類(lèi)型(SOLID45)、材料模型及網(wǎng)格劃分的形狀與尺寸大小;②用自由網(wǎng)格劃分模式劃分滑體網(wǎng)格,若無(wú)法劃分則改用映射網(wǎng)格劃分模式劃分滑體網(wǎng)格;③按滑體網(wǎng)格劃分的思路,劃分滑床網(wǎng)格。
1.4.2VB對(duì)ANSYS的封裝調(diào)用
1) 利用VB控制平臺(tái)對(duì)APDL編寫(xiě)的建模命令流進(jìn)行后臺(tái)封裝,然后調(diào)用ANSYS應(yīng)用程序,對(duì)APDL命令流進(jìn)行批處理。VB封裝ANSYS的關(guān)鍵步驟如下。
‘創(chuàng)建與啟動(dòng)ANSYS應(yīng)用程序
Dim Ansyspath As String
Ansyspath=GetAppPath(“ansys.exe”)
Shell(Ansyspath-b -i Infile-o OutFile)‘判斷ANSYS計(jì)算結(jié)束
在ANSYS運(yùn)行期間,file.bat是不可寫(xiě)的,只有當(dāng)ANSYS運(yùn)行完畢時(shí),file.bat文件才可寫(xiě)。為此可將該文件作為判斷ANSYS是否計(jì)算完畢的標(biāo)志。
ANSYS模型轉(zhuǎn)化為FLAC3D模型的關(guān)鍵點(diǎn)就是將ANSYS單元信息數(shù)據(jù)文件(ELE.DAT)和單元節(jié)點(diǎn)坐標(biāo)數(shù)據(jù)文件(NODE.DAT)轉(zhuǎn)化為FLAC3D可識(shí)別的數(shù)據(jù)文件。對(duì)于滑坡三維數(shù)值模型而言,五面楔形體、五面錐形體、四面體3種單元類(lèi)型基本能滿足建模的需要。這2種軟件所采用的單元節(jié)點(diǎn)編制對(duì)應(yīng)關(guān)系[4]見(jiàn)表2。
表2 ANSYS與FLAC3D單元數(shù)據(jù)關(guān)系對(duì)照表
根據(jù)上述FLAC3D與ANSYS單元數(shù)據(jù)轉(zhuǎn)換關(guān)系,即可借助FLAC3D內(nèi)嵌的Fish語(yǔ)言將ANSYS實(shí)體網(wǎng)格建模導(dǎo)出的單元信息文件(ELE.DAT)和單元節(jié)點(diǎn)坐標(biāo)文件(NODE.DAT)轉(zhuǎn)化為后綴為*.Flac3D的數(shù)值建模文件。該過(guò)程實(shí)現(xiàn)的關(guān)鍵步驟如下[5]。
1) 節(jié)點(diǎn)坐標(biāo)轉(zhuǎn)換。ANSYS導(dǎo)出的節(jié)點(diǎn)坐標(biāo)信息文件格式如下。
NODE X Y Z
1 0.0000 0.0000 214.54
利用轉(zhuǎn)換程序產(chǎn)生節(jié)點(diǎn)坐標(biāo)的FLAC3D命令格式如下。
*GRIDPOINTS
G 1 0 0 214.54
2) 單元信息轉(zhuǎn)換(以四面體為例)ANSYS導(dǎo)出的單元信息文件格式如下。
ELEM MAT TYP REL ESY SEC
1 1 1 1 0 1
NODES
1 2 3 3 4 4 4 4
利用轉(zhuǎn)換程序產(chǎn)生單元的FLAC3D命令格式如下。
*ZONES
Z T4 1 1 2 3 4
3) VB對(duì)FLAC3D的封裝調(diào)用。FLAC3D與ANSYS一樣均支持命令流操作,所不同的是FLAC3D命令流采用Fish語(yǔ)言編寫(xiě),其具有難以表達(dá)結(jié)構(gòu)清晰的程序,不能提供圖形化輸入界面等缺點(diǎn)。為此,可借助VB控制平臺(tái)對(duì)Fish語(yǔ)言編寫(xiě)的命令流進(jìn)行后臺(tái)封裝,然后調(diào)用FLAC3D應(yīng)用程序,對(duì)Fish命令流文件進(jìn)行批處理,其關(guān)鍵步驟如下。
‘創(chuàng)建與啟動(dòng)FLAC3D應(yīng)用程序
Dim Flac3Dpath As String
Flac3Dpath=GetAppPath(“f3300 .exe”)
Shell(Flac3Dpath)
‘讀入FLAC3D命令流文件
SendKeys “CALL FLAC3D-CAL.txt”, True
首先,在CAD前處理的地形地質(zhì)數(shù)據(jù)文件(*.DXF格式)中提取滑坡三維建模的原始數(shù)據(jù)信息,將其導(dǎo)入Surfer軟件生成經(jīng)過(guò)網(wǎng)格插值后儲(chǔ)存了地形和滑面空間曲面網(wǎng)格數(shù)據(jù)的*.txt文件;然后利用APDL語(yǔ)言編寫(xiě)ANSYS可讀取的*.txt滑坡三維實(shí)體網(wǎng)格建模命令流,將其導(dǎo)入ANSYS軟件,生成三維實(shí)體網(wǎng)格模型的單元信息數(shù)據(jù)文件(ELE.DAT)和單元節(jié)點(diǎn)坐標(biāo)數(shù)據(jù)文件(NODE.DAT);在此基礎(chǔ)上,利用Fish語(yǔ)言編寫(xiě)的ANSYS與FLAC3D轉(zhuǎn)換程序,生成FLAC3D可以讀取的*.Flac3D三維數(shù)值建模文件;待FLAC3D三維數(shù)值模型建立后,利用FLAC3D內(nèi)嵌的Fish語(yǔ)言,對(duì)其賦予相關(guān)物性、巖石力學(xué)物理或水力學(xué)參數(shù)、邊界條件等,生成FLAC3D可以讀取的*.txt滑坡三維數(shù)值模擬文件,見(jiàn)圖2。
圖2 滑坡三維動(dòng)態(tài)建模DSAF系統(tǒng)開(kāi)發(fā)框架圖
1) 基礎(chǔ)資料前處理部分。①根據(jù)滑坡范圍在CAD模式下設(shè)置計(jì)算模型的范圍,并將所有的等高線歸并到一個(gè)圖層下,設(shè)定地形圖層名;②用三維多義段(3dpoly)沿地形等高線圈定滑坡周界、連接控制點(diǎn),并設(shè)置滑坡周界和控制點(diǎn)圖層;③將處理完畢的CAD模型另存為*.DXF文件格式。
2) CAD TO ANSYS轉(zhuǎn)換部分。①通過(guò)*.DXF文件提取地形、滑坡周界和控制點(diǎn)的三維坐標(biāo)數(shù)據(jù),并將滑坡周界和控制點(diǎn)數(shù)據(jù)歸并為滑面信息數(shù)據(jù)文件;②利用Surfer軟件中的克里金插值算法按照一定的縱橫網(wǎng)格間距對(duì)地形數(shù)據(jù)和滑面數(shù)據(jù)進(jìn)行插值計(jì)算,形成地形曲面和滑面空間曲面網(wǎng)格數(shù)據(jù);③按照滑坡三維實(shí)體網(wǎng)格模型的建模方法,利用APDL語(yǔ)言編寫(xiě)三維建模命令流文件。
3) ANSYS TO FLAC3D轉(zhuǎn)換部分。①后臺(tái)啟動(dòng)ANSYS軟件,讀入APDL編寫(xiě)的建模命令流文件,建立滑坡三維實(shí)體網(wǎng)格模型,并導(dǎo)出網(wǎng)格模型單元信息數(shù)據(jù)文件和單元節(jié)點(diǎn)坐標(biāo)數(shù)據(jù)文件;②根據(jù)ANSYS模型與FLAC3D模型的轉(zhuǎn)換關(guān)系,利用Fish語(yǔ)言編寫(xiě)的模型轉(zhuǎn)換命令流,形成滑坡三維數(shù)值模型;在此基礎(chǔ)上,利用Fish語(yǔ)言設(shè)置材料物性、力學(xué)參數(shù)及邊界條件等,生成滑坡三維數(shù)值模擬計(jì)算命令流;③后臺(tái)啟動(dòng)FLAC3D軟件,讀入Fish編寫(xiě)的命令流文件,進(jìn)行數(shù)值模擬計(jì)算。
啟動(dòng)軟件進(jìn)入CAD TO ANSYS模塊界面,見(jiàn)圖3。在此界面下操作:①點(diǎn)擊相應(yīng)的“讀入菜單”讀入*.DXF文件,獲取建模原始數(shù)據(jù);②設(shè)置插值網(wǎng)格單元的橫列數(shù),點(diǎn)擊相應(yīng)的“網(wǎng)格化”菜單,后臺(tái)調(diào)用Surfer生成地形和滑面曲面網(wǎng)格數(shù)據(jù);③設(shè)置滑體和滑床的材料屬性及網(wǎng)格劃分的尺寸,點(diǎn)擊“數(shù)據(jù)保存”菜單,生成APDL編寫(xiě)的滑坡三維實(shí)體網(wǎng)格模型建模命令流文件(*.txt)。
圖3 CAD TO ANSYS模塊界面
在CAD TO ANSYS模塊界面操作完成的前提下,進(jìn)入ANSYS TO FLAC3D模塊界面,見(jiàn)圖4。
圖4 ANSYS TO FLAC3D模塊界面
在此界面下操作:①點(diǎn)擊“模型轉(zhuǎn)換”菜單,后臺(tái)調(diào)用ANSYS軟件,讀入APDL編寫(xiě)的建模命令流文件,生成用Fish語(yǔ)言編寫(xiě)的FLAC3D建模命令流文件;②設(shè)置滑體和滑床的材料屬性,點(diǎn)擊“數(shù)據(jù)保存”菜單,生成用Fish語(yǔ)言編寫(xiě)的數(shù)值模擬計(jì)算命令流文件;③點(diǎn)擊“FLAC3D計(jì)算”菜單,調(diào)用啟動(dòng)FLAC3D軟件,讀入Fish編寫(xiě)的數(shù)值模擬計(jì)算命令流文件,進(jìn)行數(shù)值模擬計(jì)算。
棗樹(shù)坪滑坡位于奉節(jié)縣鶴峰鄉(xiāng)文鋒村大溪河左岸斜坡地段,滑坡體平面形態(tài)呈“圈椅形”,滑坡前緣直抵大溪河,地形坡度20°~30°,后緣地形坡度40°~50°。滑體物質(zhì)主要為第四系全新統(tǒng)滑坡堆積層,巖性為粉質(zhì)黏土夾碎塊石,滑體厚度15.6~23.3 m,中后部滑體厚度較大,中前部滑體厚度較小?;瑤挥诘谒南捣圪|(zhì)黏土夾碎塊石與下伏砂巖、泥質(zhì)粉砂巖之間,滑面形態(tài)呈折線形,滑坡后部滑面傾角較陡,約為35°,至滑坡前部滑面傾角漸緩。滑床為三疊系中統(tǒng)巴東組(T2b)的泥質(zhì)粉砂巖組成,巖層產(chǎn)狀為148°∠27°。
3.2.1計(jì)算模型范圍確定
根據(jù)滑坡范圍選取滑坡三維數(shù)值計(jì)算模型的范圍,其中順河軸線方向取680 m,垂直河軸線方向取710 m,垂直深度取高程0~+400 m,即模型的長(zhǎng)、寬、高尺寸為680 m×710 m×400 m。
3.2.2CAD模式下基礎(chǔ)資料前處理
三維數(shù)值建模前處理部分主要是在CAD模式下進(jìn)行平面圖圖層控制處理和剖面圖滑面數(shù)據(jù)控制處理,并另存為*.DXF文件格式。經(jīng)處理后的棗樹(shù)坪滑坡平面圖和剖面圖見(jiàn)圖5和圖6。
圖5 棗樹(shù)坪滑坡三維建模前處理平面圖
圖6 棗樹(shù)坪滑坡三維建模前處理剖面圖
3.2.3滑坡三維數(shù)值模型建立
在前處理工作完成的基礎(chǔ)上,啟動(dòng)軟件進(jìn)入CAD TO ANSYS模塊界面,讀入前處理平面圖數(shù)據(jù)文件(*.DXF),并根據(jù)剖面圖輸入控制點(diǎn)的滑體厚度。點(diǎn)擊“數(shù)據(jù)保存”菜單后,啟動(dòng)ANSYS TO FLAC3D模塊界面,點(diǎn)擊相應(yīng)的菜單,即可建立基于FLAC3D環(huán)境的三維數(shù)值模型,整體及剖面數(shù)值模型分別見(jiàn)圖7和圖8。
圖7 棗樹(shù)坪滑坡三維數(shù)值模型 圖8 棗樹(shù)坪滑坡剖面數(shù)值模型
1) 本文提出通過(guò)DXF文件提取滑坡三維建模原始數(shù)據(jù),導(dǎo)入Surfer軟件進(jìn)行網(wǎng)格化插值形成地形和滑面空間曲面網(wǎng)格數(shù)據(jù);通過(guò)APDL語(yǔ)言形成滑坡實(shí)體網(wǎng)格建模命令流,導(dǎo)入ANSYS生成單元信息數(shù)據(jù)文件和單元節(jié)點(diǎn)坐標(biāo)數(shù)據(jù)文件;通過(guò)Fish語(yǔ)言形成模型轉(zhuǎn)換文件,導(dǎo)入FLAC3D生成滑坡三維數(shù)值模型的建模方法。
2) 以VB為控制平臺(tái),以CAD、Surfer、ANSYS、FLAC3D4種軟件的接口技術(shù)與二次開(kāi)發(fā)技術(shù)為基礎(chǔ),構(gòu)建了基于DSAF集成系統(tǒng)的動(dòng)態(tài)建模平臺(tái)。在此基礎(chǔ)上,以數(shù)據(jù)文件為傳輸媒介,實(shí)現(xiàn)了DSAF集成系統(tǒng)的無(wú)縫連接。
3) 該系統(tǒng)具有數(shù)據(jù)準(zhǔn)備簡(jiǎn)單、人機(jī)交互性強(qiáng)、簡(jiǎn)單明了、操作方面等特點(diǎn)。工程實(shí)例驗(yàn)證了該系統(tǒng)的建模功能和適用性,該系統(tǒng)從基礎(chǔ)資料的前處理到滑坡三維數(shù)值模型的建立整個(gè)過(guò)程僅需5 min左右,大大提高了建模的效率。