首页/文章/ 详情

二维DFN计算RQD的修正方法---软件问题还是方法有误?

1年前浏览614

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

来源:计算岩土力学
断裂PFC
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-11-27
最近编辑:1年前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 143粉丝 1040文章 1776课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈