如何在離散斷裂網絡DFN中計算RQD指標

如何在離散斷裂網絡DFN中計算RQD指標的圖1

1 引言

昨天晚上有位同學問了一個問題,如何實現在離散斷裂網絡DFN中計算RQD【Deere's RQD---現代巖體工程分類方法的基石 (Part II)】,他已經給出了計算思路,如下圖所示:(1) 使用geometry生成鉆孔;(2)計算鉆孔與DFN之間的intersection;(3) 把鉆孔分為三個計算分區:端部1[fracture.intersect.end1]、中部和段部2[fracture.intersect.end2],分別計算三個分區大于10cm的長度,然后即可得到RQD的值。

如何在離散斷裂網絡DFN中計算RQD指標的圖2

早上起來之后琢磨了這個問題,步驟(1)和(2)與他給的計算思路相同,但在計算每段長度上使用了與(3)和(4)不同的方法。我沒有使用PFC,在UDEC中作了一個非常倉促的測試,但是代碼應該基本上通用。下面簡要說一下我的計算思路,供這位同學和其他感興趣的同學參考使用。

2 RQD計算過程

(1) 生成鉆孔:

geometry set 'borehole'geometry edge create by-position (-1,0)  (1,0)

上述代碼產生一個長度2m的水平鉆孔,我不記得在哪篇公眾號文章中提到過,計算RQD的最大取樣長度不應超過2m。

(2) 產生DFN

fracture generate fracture-count 50

使用默認的模板產生50條隨機斷裂。

(3) 計算相交點

fracture intersection compute ...with-geometry 'borehole' intersection-set 'frac_bh'

如何在離散斷裂網絡DFN中計算RQD指標的圖3

鉆孔與DFN共有7個交點。

[number_of_fracture_intersections = fracture.intersect.num]

(4) 計算交點之間的距離

與這位同學給出的思路稍有不同,我沒打算分區,而是計劃直接在代碼中進行判斷。使用

fracture.intersect.find( )獲取交點的指針,然后使用fracture.intersect.pos1( )獲取交點的坐標,由于縱坐標為0,因此只用comp.x()獲取x坐標即可。通過兩個點的坐標相減即可計算出兩點之間的距離,然后判斷長度dis是否大于0.1,如果大于0.1,那么把這個距離儲存在數組map()中【FISH: 使用MAP數組實現loop foreach】,循環計算7個交點之間的距離,最后計算并判斷最后一段距離。這個過程的代碼如下圖所示:

如何在離散斷裂網絡DFN中計算RQD指標的圖4

最后用大于10cm的長度總和sum除以鉆孔長度2m,即可求出RQD的值。

3 結束語

上述過程簡要概括了在DFN中計算鉆孔的RQD,由于邊寫本文邊敲代碼,代碼寫得完全不規范,僅用于臨時測試,但已經給出了具體思路和需要使用的函數,基本上免費回答了這位同學提出的問題。此外,FISH語言在數據儲存和操作上不夠靈活,以后將用Python重新寫一個通用的計算RQD的程序,以適應不同的鉆孔方向。與DFN相關的公眾號文章 Top 20如下所示,供擴展閱讀。  

如何在離散斷裂網絡DFN中計算RQD指標的圖5

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

4