二維DFN計算RQD的修正方法---軟件問題還是方法有誤?
1 引言
在【答復同學提問---如何在離散斷裂網絡DFN中計算RQD指標】中描述了在二維DFN中計算RQD的方法和步驟,當時由于時間倉促,沒有仔細檢查代碼,回頭驗證時才發現這個代碼不能正確計算出RQD值,出錯原因不在那段代碼的思路和算法,而是UDEC軟件本身引起的數據問題。本文首先討論了出現的這個百思不得其解的問題,然后給出了一種臨時解決辦法。
2 出現的問題
計算RQD的基本思路為:(1)求出鉆孔線與DFN的交點;(2) 計算交點之間的長度,包括鉆孔起點與終點;(3) 累加兩點之間距離大于0.1m的長度, 然后除以鉆孔線總長度即可得到RQD值。
按照這種思路,后一點的坐標順序減去前一個點的坐標,就可得到兩點之間的距離。然而問題就出現在這兒,交點坐標本應該按照從左到右的順序依次排列,但在某些點不知什么原因出現了順序顛倒,至今沒有查找出出現這個問題的原因。開始以為是UDEC軟件的問題,結果在PFC中測試發現存在同樣的問題。具體問題表現在:
(1) 斷裂數N=20時,有1個交點,鉆孔坐標值域[-1,0.26,1],Ok;
(2) 斷裂數N=30時,有3個交點,鉆孔坐標值域[-1,-0.46,0.11,0.27,1], OK;
(3) 斷裂數N=40時,有5個交點,鉆孔坐標值域[-1,-0.54,-0.21,-0.46, 0.11,0.27,1]; 開始出現問題了,-0.46本來應該排在-0.21的前面,這樣才能進行正確的順序遞減,但不清楚軟件為啥把這個順序顛倒了;
(4) 斷裂數N=80時,有9個交點,鉆孔坐標值域為
[-1,-0.82,-0.61,-0.53,
-0.21,-0.46,
0.11,0.26,
0.85,0.72,1]
可以看出,在這種情形下,出現了兩處順序排列顛倒的地方。先前的代碼由于沒有意識到這個問題,認為順序自動由小到大排列,導致不能得出正確的結果。
3 解決方法
解決方法其實很簡單,即在計算交點之間的長度之前,把程序自動求出的交點列表進行排序,由小到大順序排列,然后再進行計算,為此對代碼作了如下修正:
(1) 使用了Itasca Python模塊(RQD-Calculation.py),盡管用FISH也能完成這個任務,但我使用Python更順手一些;
(2) 用list函數代替了原代碼的map函數,使得數據操作更方便;
(3) 代碼改在PFC中運行,但在UDEC中運行應該也一樣。
這是一個為了特定存在問題的解決方案,但究竟是軟件本身引起的問題,還是使用的方法有誤,至今我想不出原因。Anyway, 問題解決了。
4 代碼驗證
現在,經過修正的代碼能夠正確地計算出RQD的值。
5 主要函數
RQD-Calculation.py使用的主要函數包括:
(1) fracture.intersect.num
(2) fracture.intersect.find
(3) fracture.intersect.pos1
(4) comp.x
(5) list.seq
(6) list.append
(7) list.sort
(8) it.fish.get
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















