离散断裂网络[DFN.]FISH函数分类与解析(UDEC和3DEC)

1 引言

最近15年来,离散断裂网络DFN在岩石工程中得到了逐渐的普及和应用,应用领域包括边坡和地下开挖稳定性分析,仿真岩石力学试验以获得真实的岩体强度以及预测崩落采矿的岩石破碎性能等。本公众号以前讨论过大量DFN方面的研究,Top 15文章如下所示。 

离散断裂网络[DFN.]FISH函数分类与解析(UDEC和3DEC)的图1

下面的试验与讨论基于UDEC/3DEC 7.0。离散断裂网络模拟和操作可分为两个层次:一个是DFN,DFN用在DFN水平上进行操作,另一个是Fracture,fracture用来操作DFN内的断裂。这个笔记简要讨论了DFN层次上的操作函数。

离散断裂网络[DFN.]FISH函数分类与解析(UDEC和3DEC)的图2

2 DFN函数 

DFN FISH共有22个函数,其中3个只有在3DEC才有,这三个UDEC没有的函数分别是: 

dfn.contact.list(D_PNT<,INT>); 

dfn.contact.list.all(D_PNT<,INT>);

dfn.prop(D_PNT,STR)

下面按照函数的功能以及传递的参数值对这些函数进行了分类。这样的分类比直接按照字典顺序给出更容易理解和掌握。当产生一个DFN后,便可以使用这些函数对DFN进行操作。

fracture generate dfn 'p1' fracture-count 100

(1) 寻找指针

UDEC和3DEC的数据都是以链表结构储存的,因此为了操作DFN中的数据,首先需要获得DFN的指针,指针通过dfn.find(ad)函数获取,ad为DFN的名称或者ID, ID的索引从1开始。


(2) 不需传递参数的断裂类型,ID和数量

有三个函数不需要任何传递参数,它们是:

[1] dfn.maxid 获得最大的DFN ID值。当模型有多个DFN组成时可以获取最大的ID值,如果只有一个DFN,那么返回值是1.

[2] dfn.num 获取模型中DFN断裂的总数量。在实际建模时,这个函数比较有用,可以用来查看模型的规模。

[3] dfn.typeid  获取DFN的类型号。类型ID可以用来唯一地识别DFN FISH的指针,并将其与任何其他类型的FISH指针区分开来。这个函数的返回值是整形。


(3) 不需传递参数的列表

还有一个不需要传递任何参数的函数是dfn.list,这个函数用来获取全局的DFN列表。使用loop foreach结构迭代该列表。


(4) 不需要指针的函数

有两个函数需要传递参数但不需要指针,第一个函数是上面提到的dfn.find,需要传递的参数或者是DFN名称,或者是DFN ID,第二个函数是dfn.create(<ID>,<s>),这个函数用来在FISH内创建一个DFN。这个DFN是空的,它的dominance值被设置为下一个可用的dominance(参见fracture contact-model命令和dfn.dominance)。这两个值都可以不填写,系统会赋默认值。如果不指定ID或s,则选择下一个可用的ID,名称设置为dfnXX,其中XX为ID。


(5) 仅使用指针的函数

下面这些函数必须并且唯一传递的参数是DFN指针。

[1] dfn.delete(D_PNT): 删除一个DFN, 使用这个命令后,所有的断裂和相应的交叉点都被删除。

[2] dfn.fracturelist(D_PNT): 获得指定的DFN的断裂列表。使用loop foreach结构迭代该列表。从架构上看,dfn.list处在这个函数的上层。

[3] dfn.dominance(D_PNT): 获取/设置DFN的dominance。参看(4)的说明以及(fracture contact-model)命令。这个函数是双向的,既可以获取也可以赋值。

[4] dfn.id(D_PNT): 获取指定的DFN ID, 如果只有一个DFN,那么ID=1.

[5] dfn.name(D_PNT): 获取DFN的名称。

[6] dfn.fracturenum(D_PNT): 获取指定DFN的断裂数量,dfn.num获取的是整个模型的断裂数量。

[7] dfn.template(D_PNT):   获取用于生成此DFN的断裂模板。如果在生成后有任何断裂被修改,返回值将是0。


(6) 使用指针和其它参数的函数

下面这些函数必须使用指针,但可以传递其它的参数。

[1] dfn.contactmap(D_PNT<,INT>): 获取与一个指定DFN相关的活动接触。可选择的接触类型ID用来过滤返回的接触。 

[2] dfn.contactmap.all(D_PNT<,INT>):与上面的函数类似,获取与一个指定DFN相关的所有接触,包括那些不活动的接触。 

[3] dfn.extra(D_PNT<,INT>):双向函数,获取或设置一个DFN的额外变量。

[4] dfn.group(D_PNT<,STR>): 双向函数,获取或设置DFN组名。返回值是字符串,如果没有设置组名,那么返回值是"Null"。

[5] dfn.group.remove(D_PNT,STR):移除DFN组, 指定的组名将从所有组槽中删除。[6] dfn.isgroup(D_PNT,STR<,STR>):指出DFN组的状态。

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