如何在离散断裂网络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

默认 最新
当前暂无评论,小编等你评论哦!
点赞 评论 收藏 3
关注