在UDEC中,生成节理通常有两种方式,一条一条的生成(crack)以及设置节理集(jset)的方式。二者有时候产生的效果是一致的。例如:
crack (0,0) (10,10)
与
jset angle 45 origin 5,5
的效果是一样的,都是产生一个45度的节理。
如果使用多个 crack 命令来生成节理,crack 的顺序对最终节理的生成没有影响,如生成下列锯齿状节理时将顺序打乱:
ro 0.1
bl 0,0 0,10 10,10 10,0
cr 2.5,6 5,5
cr 0,5 2.5,6
cr 5,5 7.5,6
cr 7.5,6 10,5
同样可以生成:
在设置节理时,节理必须要将块体完全切割,离散的区域必须是一个个独立的多边形,不能存在那种在块体内部而没有延伸至块体边界的节理,这种节理在模型开始求解后都将被自动删除,也可以在生成节理以后使用 JDELETE 命令手动删除。
同时,给块体边角指定的 rounding length 对节理的生成也有影响,并且产生这种影响时程序不会报错或警告。具体可查看《UDEC中round的取值及应该注意的一个隐蔽的问题》中所述。
JSET 可以看成是基于统计的节理集生成命令。主要参数如下:
angle 指定节理相对于X轴的方向, gap 指定一条节理片段中片段的间距, spac 指定多条节理之间的间距, trace 指定节理片段的迹长, origin 指定节理的原点, adev 指定偏离节理方向的角度。通过上图可以很清晰的知道每一个参数的意义。
下面是一个生成四个规则节理集的例子:
new
round 0.01
block 0,0 0,20 20,20 20,0
jset angle 0 spacing 3 origin 0,0
jset angle 90 spacing 3.5 origin 0,0
jset angle 30 spacing 4 origin 0,0
jset angle 50 spacing 6 origin 0,0
或者在圆形区域生成节理片段:
new
round 0.01
block circular 0.0,0.0 5.0 40
jset angle 0 trace 3,1 gap 0.25,0.2 spacing 0.5,0.2 origin 0,0
jset angle 70 trace 3,1 gap 0.25,0.2 spacing 0.5,0.2 origin 0,0
里面包含了大量无法将块体完全切割的节理,通过运行 JDELETE 命令之后这些节理将被删除:
当指定的节理片段可以完全将块体切割时,节理都可以存在:
new
round 0.1
block 0,0 0,10 10,10 10,0
jset angle 45 spacing 1 origin 0,0
jset angle 315 trace 1 gap 1 spacing 1 origin 0,0
jset angle 315 trace 1 gap 1 spacing 1 origin -1,0.354
如果想指定节理生成的范围,通过 JREGION 可以指定一个四边形区域定义这个范围。用法如下:
每个JREGION由一个id号标识。该区域的坐标按顺时针方向指定,并划定该区域的边界进行节理生成。如果给出了可选的关键字delete,则在以前的JSET、VORONOI或CRACK命令中存储的节点将被删除。当指定多个JREGION时是很有用的,以避免由相邻区域产生节理的相互切割。
Voronoi命令可以创建随机大小的多边形块。UDEC模型中的一个或多个块可以细分为任意大小的Voronoi子块,通常可以用来模拟裂纹的扩展过程。用法如下:
第一个参数指定了Voronoi多边形的平均边长,多边形的大小是随机的,但会有平均的边长。第二个可选参数指定迭代次数,通过增加迭代次数,可以使Voronoi块的大小分布更加均匀(默认值是n = 5)。第三个可选参数指定倒角的长度,倒角长度必须比平均边长至少小20倍。
通过指定 JREGION 区域与 JSET 节理集,按照计算好的角度设置可以生成下面这种上下分区的六边形节理:
new
ro 0.01
block 0,0 0,10 10,10 10,0
crack (0,5) (10,5)
jregion id 1 0.0,5.0 0.0,10.0 10.0,10.0 10.0,5.0
jregion id 2 0.0,0.0 0.0,5.0 10.0,5.0 10.0,0.0
; jregion 1 joints
jset angle 15 trace 1 gap 2 spacing 1.732 origin 1.932,0.518 range jreg 1
jset angle 15 trace 1 gap 2 spacing 1.732 origin 0.259,0.966 range jreg 1
jset angle 135 trace 1 gap 2 spacing 1.732 origin 1.932,0.518 range jreg 1
jset angle 255 trace 1 gap 2 spacing 1.732 origin 1.932,0.518 range jreg 1
jset angle 75 trace 1 gap 2 spacing 1.732 origin 0,0 range jreg 1
jset angle 315 trace 1 gap 2 spacing 1.732 origin 0,0 range jreg 1
jset angle 75 trace 1 gap 2 spacing 1.732 origin 1.225,1.225 range jreg 1
jset angle 135 trace 1 gap 2 spacing 1.732 origin 0.259,0.966 range jreg 1
; jregion 2 joints
jset angle 0 trace 1 gap 2 spacing 1.732 origin 0,0 range jreg 2
jset angle 0 trace 1 gap 2 spacing 1.732 origin 1.5,0.866 range jreg 2
jset angle 60 trace 1 gap 2 spacing 1.732 origin 1,0 range jreg 2
jset angle 60 trace 1 gap 2 spacing 1.732 origin 1,1.732 range jreg 2
jset angle 300 trace 1 gap 2 spacing 1.732 origin 1,-1.732 range jreg 2
jset angle 300 trace 1 gap 2 spacing 1.732 origin 1,0 range jreg 2
定义的 JREGION 区域保证了节理不会相互交叉,只在自己的范围生成。
Voronoi多边形生成的节理:
round 0.01
block 0,0 0,5 20,5 20,0
crack (9,5) (9,3)
crack (9,3) (11,3)
crack (11,3) (11,5)
;
vor edge 1.0 iterations 100 round 0.01 range atblock (10.0,2.5)
jdelete
定义的 JREGION 区域,联合 JSET 以及 VORONOI 命令可以生成下面这种模型:
round 0.01
block 0,0 0,30 10,30 10,0
crack (0,10) (10,10)
crack (0,20) (10,20)
vor edge 2.0 iterations 100 round 0.01 range atblock (5.0,5.0)
jdelete
jregion id 1 0.0,10.0 0.0,20.0 10.0,20.0 10.0,10.0
jset angle 45 spacing 1 origin 0,0 range jregion 1
Comments | 17 条评论
很有帮助!!
vor edge 2.0 iterations 100 round 0.01 range atblock (5.0,5.0)
这段命令中的range atblock以及后面的(5.0,5.0)代表什么意思?
@Flanker 代表包含(5.0,5.0)这个坐标的块体
atblock和jdelete代表的啥意思
@白志云 atblock代表包含(5.0,5.0)这个坐标的块体,jdelete是删除那些没有将块体完全切割的节理,你可以看一下文中那个圆形区域生成节理的两个图的对比
点赞点赞!
set angle 45 spacing 1 origin 0,0 range jregion 1 为什么是origin(0 0 )?
@18270146172 origin只是指定节理过的点,例子里是为了方便用的原点,你也可以用别的点
在jregion区域内生成节理也是要满足必须切割完整的块体的条件吗?我试过之后发现节理不显示
@790552156 应该是任何地方生成节理都不能存在非贯穿的,不然是无法计算的
也就是说,必须用节理完全贯穿划分的块体,在块体的内部区域内设置与块体边界不相交的节理是程序不允许的,会被直接程序删掉 大概是这样理解吗? 如果会被删除的话有没有具体的关键词设置不与边界相交的节理(我上传了一个网站具体解释一下我的理解和疑问,博主有空的话希望能帮我看一下,谢谢)
https://ask.csdn.net/questions/7428143?spm=1005.2026.3001.5622
@柚子 图1的节理是不允许的,不完全切割是没办法生成块体的,不能生成块体就无法计算其变形应力等,如果非要这样做的话,可以参考我这篇文章里例子的做法:https://geomatlab.com/udec-verificationproblems-1/
请问用crack生成的两条(层面)节理 但我想给这两条参数赋不一样的参数,应该如何命名赋值呢
@1282069542 CRACK x1 y1 x2 y2 (range. . .) (id = n) (join),括号为可选参数,通过指定不同的id号来索引不同的节理就行了。节理参数赋值时使用range id n就可以分别赋值了
好的谢谢 ,那请问在不规则的比如五(六)边形里面想用jset命令,怎么用jregion命令去指定这个五(六)边形区域呢?
@1282069542 jregion使用range指定你想要的区域, range atblock x y, 这里的x,y为块体包含的坐标就行