本教程来自 3DEC 5.2 Help → Tutorials → Tunnel With Support in 3DEC
1.介绍(Introduction)
本教程将向用户介绍基本命令,以便在岩体中创建隧道并实现不同结构单元的支护。 用户将学习如何交互式在控制面板中创建可视化模型。
在未进行支护的节理切割的隧道岩体中产生了楔形破坏,因此需要进行支护。 隧道是分阶段开挖的,随着开挖的继续,增加了包括锚杆单元和衬砌结构的使用。
本教程包含四个data文件:(1)构建初始块体模型和隧道; (2)开挖隧道并查看破坏情况; (3)实施锚杆加固; (4)实施衬砌结构加固。
文件名称为:initial.3ddat, unsupported.3ddat, cable_support.3ddat, liner_support.3ddat
主题(Topics)
可变形体(Deformable blocks)
初始应力(In-situ stress)
锚杆支护(Cable support)
衬砌支护(Liner support)
涉及的命令有:bound, delete, generate, insitu, remove, reset, solve, struct, tunnel
2.创建项目(Project)
首先启动 3DEC,然后选择 “ New Project ...”。
当出现提示时,将新项目另存为 “tunnel_tutorial.3dprj”。 通过选择 File → New Item → Data File... 创建一个新的数据文件,并将文件另存为 “initial.3ddat”。
3.创建模型(Creating a Model)
使用 new
命令开始数据文件,这将清除之前可能已存储的所有模型信息。 这对于本教程而言也是有用的,因为它允许我们向文件中添加命令并一遍又一遍地重新运行它。 每次我们执行操作时,都会从 new
命令创建的清除状态中再向前运行。使用 poly brick
命令生成块体。 块模型为 20×20×20,质心坐标为(0,0,0)。
new
poly brick -10 10 -10 10 -10 10
我们可以通过选择 File→New Item→Plot 为模型创建一个新视图窗口。 将会出现提示框,要求输入新视图窗口的名称。 输入“Blocks”,然后单击 “OK”。
将会出现一个新的空白视图,并且右侧控制面板(Control Panel)中提供了一个图项列表。 双击 List 选项卡中的 Blocks 项目,以在新图窗口上显示块体模型。
使用鼠标右键可以旋转绘图,使用Shift +鼠标右键可以平移,使用鼠标滚轮可以放大和缩小。 旋转块体模型后,视图窗口应如下所示:
为了建立隧道模型,我们使用一个名为 tunz 的简单FISH函数定义隧道的几何参数。 FISH 是3DEC使用的内置脚本语言,允许用户以比单独使用命令更高级的方式操纵所有模型数据。 FISH函数使用定义的 function_name 和 end 括起来,如下所示。
;定义FISH函数,dat文件中的分号表示注释
def tunz
;
; --- tunnel beginning and end ---
yya = -10.0
yyb = 10.0
;
; --- tunnel extents in x and z direction ---
txb1 = -4.0
tzb1 = -4.0
txb2 = 4.0
tzb2 = -4.0
;
; --- semi-circle roof ---
txc = 0.0
tzc = 0.0
tr = 4.0
tx1 = txc + tr * cos(180*degrad)
tz1 = tzc + tr * sin(180*degrad)
tx2 = txc + tr * cos(135*degrad)
tz2 = tzc + tr * sin(135*degrad)
tx3 = txc + tr * cos(90*degrad)
tz3 = tzc + tr * sin(90*degrad)
tx4 = txc + tr * cos(45*degrad)
tz4 = tzc + tr * sin(45*degrad)
tx5 = txc + tr * cos(0*degrad)
tz5 = tzc + tr * sin(0*degrad)
end
有关使用FISH的更多详细信息,请参见FISH参考。在本教程中,将使用在 tunz 函数中定义的参数创建具有半圆形顶部的隧道。
接下来,我们定义隧道开挖各个阶段的范围。 沿隧道y轴以5个单位增量划分四个阶段。 为此又定义了另一个简单的FISH函数,称为 stage。
; --- y coordinates for excavation stages ---
def stages
stage0 = -10
stage1 = -5
stage2 = 0
stage3 = 5
stage4 = 10
end
我们通过在函数名称之前使用“ @
”符号来执行每个函数。 这样做是为了确保赋予FISH函数的名称与3DEC中的内置命令不冲突。
; (execute functions)
@tunz
@stages
使用先前定义的隧道参数,我们使用 tunnel
命令为隧道的每个面指定径向点。 从输入中顺时针读取这些点。 本示例使用七个点来定义隧道的形状。
; create tunnel
tunnel radial &
a @txb1,@yya,@tzb1 @tx1,@yya,@tz1 &
@tx2,@yya,@tz2 @tx3,@yya,@tz3 &
@tx4,@yya,@tz4 @tx5,@yya,@tz5 @txb2,@yya,@tzb2 &
b @txb1,@yyb,@tzb1 @tx1,@yyb,@tz1 &
@tx2 ,@yyb,@tz2 @tx3,@yyb,@tz3 &
@tx4 ,@yyb,@tz4 @tx5,@yyb,@tz5 @txb2,@yyb,@tzb2 &
reg 5
group block 'tunnel' range region 5 ;分组
save tun_a
注意:使用 &
表示连接符号,代码行在下一行继续,像单行一样执行。
运行模型后,最后一行的命令会将模型状态保存到名为 “tun_a” 的文件中。
3DEC模型的不同部分分配了不同的区域编号。 使用组可提供更大的灵活性。 但是,某些命令(例如tunnel
)尚未更新使用组。 因此,使用tunnel
命令将隧道分配给区域 5,然后使用 group block
命令将隧道区域设置为名为 tunnel 的块体组。
要查看组,请转到“Blocks” 视图,通过单击控制面板 Blocks 图项旁边的“眼睛”符号来显示或隐藏块体。 现在,在 List 中选择 Blocks → Group 。 在 Attributes中,取消选中透明度(Transparency)复选框。
4.创建节理集(Creating the Joint Sets)
现在,我们在模型中插入三个节理组,以在隧道顶部产生楔形体。 jset
命令用于指定必要的倾斜方向和倾斜角度以及节理平面的原点。
; --- joints --- 3 joints to form a wedge in the roof
;
jset dd 270 dip 70 origin 0 0,5.7 id 10
jset dd 40 dip 65 origin 0 0,5.7 id 10
jset dd 130 dip 60 origin 0 0,5.7 id 10
;
save tun_b
执行文件后,节理将被创建,当前状态将保存为 tun_b。
要查看节理,请选择控制面板中的 List 选项卡。 双击 Joints 将其添加到绘图窗口中。 但是现在仍看不到任何节理,因为它们被块体遮住隐藏了。 通过单击 BGroup 绘图项, 在 Attributes 下,单击 Colors 旁边的小三角形展开选项,然后取消选中 Default。
现在,节理将如下所示:
5.划分网格(Zoning)
通过将块划分为四面体区域,可以使块变形。 这是使用generate
命令完成的。 我们首先通过隐藏隧道,指定隧道周边的网格大小。
; --- mesh generation ---
;
; rock blocks
hide range group 'tunnel' ;隐藏名为tunnel的块体组
gen edge 5 ;划分网格
然后隐藏隧道周围岩体,并使隧道可见。
; tunnel (with stages)
seek ;使全部块体可见
hide range group 'tunnel' not ;not相当于逻辑里面的“非”
通过沿 y 轴添加虚拟的垂直节理,将隧道体积分为四个区域,然后使用更细的网格划分区域。
; --- fictitious joints --- 3 joints for excavations
;
jset dd 0 dip 90 origin 0,@stage1,0 join
jset dd 0 dip 90 origin 0,@stage2,0 join
jset dd 0 dip 90 origin 0,@stage3,0 join
;
seek
gen edge 2
save tun_z
注意,已经由generate
命令划分网格的块体将不会由后续的generate
命令重新离散化。 因此,无需为第二个generate
命令提供范围,它只会离散化未划分网格的隧道块体。模型状态将保存为 “tun_z.3dsav”。
将上一步创建节理后显示节理的操作“逆向操作”,可以将整个模型显示出来,如下图所示:
Comments | 7 条评论
大佬,您知道3DEC初始温度加载的命令咋写吗?我这按照说明写老是报错
这个是3dec5.0还是7.0版本的命令,为啥再7.0版本输入是错误的呢?
@A 命令很明显是5.2版本的,而且在文章第一行有写来源
您好,想问一下group和region划分的区域有啥区别嘛?
@2457432333 貌似没什么区别,但是在Tunnel命令下可以直接接关键字region定义区域: TUNNEL region n radial a x1,y1,z1 x2,y2,z2 x3,y3,z3 b x1,y1,z1 x2,y2,z2 x3,y3,z3 . . .
博主你好,由于我隧道的截面要保持平滑,一共导入了几十个点,但是这样建出来的隧道线条太多了,影响到了网格质量,请问前处理能否解决这个问题
@大手 如果是软件内置的划分网格,估计更改不了网格,软件自动生成的有时候确实质量较差,可以将单元大小减小试试。或者可以考虑从第三方软件,例如有限元或者犀牛建模划分质量高点的网格,再导入3DEC