本文作者:东南大学Zoro
Email:739226366@qq.com
本文为一篇投稿分享,这也是本站第一篇投稿分享,感触良多。毕竟精通技术的人不在少数,而愿意选择分享的人却少之又少。
非常感谢Zoro同学的知识分享,希望有更多的人能分享一些自己模拟中的学习心得或者案例,这将帮助到更多的人。
以下内容均来自Zoro同学,并授权我发布于此,我将其进行了排版和少许补充。
1.教程介绍
本教程将介绍3dec的DFN随机节理生成功能。
当初自学的时候比较艰难,网络上DFN教程并没有人来写,于是请教了课题组师兄、岩土所辉兄以及3dec学习群(86556690)的大佬们,查阅了3dec5.2的help文档、实例教程以及诸多3dec参考书,学会了初步生成所需要的随机节理并对所需块体进行切割的方法,闲暇之余总结一些学习心得,以帮助刚接触3dec又需要生成随机节理的小伙伴们能够快速掌握该功能。
本教程可参考3DEC 5.2 自带的实例教程软件左上方 help 栏 Examples/Users_Guide/DFN 文件夹中的dfn.3dprj
实例。
打开后运行 Data Files 栏中的 dfn.3ddat
和 dfn_3dec.3ddat
即可进一步学习研究,软件基础操作可参考学习本站 3dec入门教程篇,写的很基础很详细。
2.教程内容
- 建立模型块体及视图
- 建立随机裂隙模型
- 使用随机裂隙模型切割模型块体生成随机节理
用到的命令:poly plot domain dfn set jset
命令的更多高级用法查阅 3DEC 5.2 的 help 文件 Command Reference/3DEC Commands-Detailed Listing
1) 建立模型块体及视图
首先新建一个工程文件,可以看到软件界面上默认只有一个 Plot 1,在右侧的 Control Panel 栏的 list 中双击 Block ,即可显示命令生成的块体模型
单击 Misc 并双击其下的 ScaleBox(在 Plot Items 中选中 ScaleBox,把下方 Attributes 的 Box 选项取消勾选,即取消着色,方便观察块体)
再双击 Axes,Plot 1 左下角可显示坐标轴
在 Plot Items 中选中 Display Settings ,在下方 Attributes 的 Name 选项中重命名为 Block。
然后我们创建一个边长为20m的简单立方体模型,在 Console 一栏最下方输入命令:
poly brick (-10,10)(-10,10)(-10,10)
即可在 Plot 1 中看到块体,继续输入命令:
plot create
生成新的图像框 Plot 2,在右侧的 Control Panel 栏的 list 中单击 DFN 并双击其下的 Value
单击 Misc 并双击其下的 ScaleBox(在Plot Items中选中ScaleBox,把下方Attributes的Box选项取消勾选,即取消着色,方便观察DFN)
双击 Axes,图框 Plot 2 即可显示下面命令生成的随机裂隙模型
在 Plot Items 中选中 Display Settings,在下方 Attributes 的 Name 选项中重命名为 DFN。如下图所示:
2) 建立随机裂隙模型
首先定义生成随机裂隙的空间域,在此暂且定为与块体模型尺寸一致,输入命令:
domain extent (-10,10)(-10,10)(-10,10)
然后建立随机裂隙的概率分布模型,默认单个的随机裂隙为圆片形状,用户可以自定义形状(参考help中的对应章节), 模型的基本要素包括名称、倾向、方位、大小、尺寸上下限,其中倾向和方位的概率分布可以选择均匀分布、高斯分布、fish编程以及人为列举,此外倾向定义了概率模型后要给出初始的倾角倾向;尺寸除了上述的几种方式外还可以选择幂律分布。
这里我们给概率模型命名为 suiji;倾向的概率分布为高斯分布(均值为0 ,方差为8),基准倾角为 15°,倾向为 0°;方位的概率分布选择均匀分布;尺寸的概率分布选为幂律分布(α 为 4);尺寸的上下限设为 1 到 100 m,命令如下:
dfn template create name suiji orientation gauss 0,8,15,0 position uniform size powerlaw 4 slimit 1 100
此时 DFN 图框(Plot 2)中仍然是一篇空白,这需要我们进行下一步操作——链接概率模型设定停止条件,进而生成随机裂隙。
我们在命令流中需要给生成的裂隙命名,划定生成区域,链接上个步骤创造的概率模型,并设定停止条件,help中给出了若干停止条件:裂隙密度、触发点、裂隙数等,我们选择一种即可。
这里选择裂隙密度,定为0.33,裂隙名称设为 sj,id 设为1,命令流如下:
dfn generate name sj genbox -10 10 -10 10 -10 10 id 1 template name suiji density 0.33
这时可以在DFN图框中看到大大小小不同样子的圆片了,而Block图框中仍然是完整的立方体。
3) 使用随机裂隙模型切割模型块体生成随机节理
接下来我们要做的就是使用生成的随机裂隙模型来切割块体
在切割之前要设定公差,因为裂隙模型的尺寸最小值为1,尽量把公差设小一点,设为 0.001,见命令流:
set atol 0.001
紧接着就可以进行切割,直接调用随机裂隙模型的 id 即可,命令流如下:
jset dfn 1
经过几秒到几分钟不等的切割时间,可以看到Block图框中的块体被切的很碎。
当然我们可以看到块体内部的切割情况
在Block图框下,右侧 Control Panel 栏的 list 中单击 Cutting Planes , 双击下面的 Octant,然后在 Plot Items 中选中 Block
单击下方 Attributes 的 Cutplane 选项左侧的小三角,选中 on、back,取消选中 front,即可看到内部的剖面
再次单击 Plot Items 中 Octant 选项,可在图框中调节剖面倾向倾角,在 Attributes 的 Origin 中可以改变旋转点的坐标,调整好后再次单击 Plot Items 中的 Block,即可详细观察块体内外部的切割状况。
在DFN图框中可以看到,有许多过于细小的裂隙,如果放任这些细小裂隙到下一步骤去切割块体的话,实际的学习工作计算中会浪费大量的时间(高精度的特殊项目除外),所以我们在生成随机裂隙后把一些细小的、倾向倾角及其接近的相邻裂隙通过删除或合并的方式进行优化,亦或者只保留一定迹长的接触裂隙,具体方法可以参照 3DEC 5.2 自带的实例教程软件左上方 help 栏 Examples/Users_Guide/DFN 文件夹中的 dfn.3dprj
实例,这个案例建立了两套随机裂隙模型,一套近水平裂隙,一套近竖直裂隙,通过上述两种手段对裂隙模型进行了优化,有需要的可以进一步研究。
下面将本教程的全部命令流都整合起来,初学者可以在3dec项目所在的文件夹建立一个xxx.txt文件(文件名必须英文),将以下命令复制过去保存,在3dec的命令输入框中输入:
call xxx.txt
(博主补充:也可以使用快捷键Ctrl+N
创建一个.3ddat 文本文件,将命令复制进去,点击菜单栏的绿色按钮运行)
然后将两个图框按照教程修改即可看到结果。
命令如下:(若显示不全,点击代码框上边缘可全屏查看,再次点击返回)
;---随机节理DFN入门教程---
;建立块体模型
new
poly brick (-10,10)(-10,10)(-10,10)
;创建dfn图框,块体及裂隙生成的显示需要手动调节,见教程(命令流生成不太熟练见谅)
plot create
;定义裂隙域
domain extent (-10,10)(-10,10)(-10,10)
;建立概率分布模型
dfn template create name suiji orientation gauss 0,8,15,0 position uniform size powerlaw 4 slimit 1 100
;链接模型并设定停止条件( density/p10/percolation/nfrac)
dfn generate name sj genbox -10 10 -10 10 -10 10 id 1 template name suiji density 0.33
;设定公差
set atol 0.001
;导入节理
jset dfn 1