1 引言
3DEC模型转换到FLAC3D模型比转换到UDEC模型【三维模型输出到二维模型(3DEC to UDEC)】要复杂的多,原因是三维模型对象的属性比二维模型多,涉及到点,线,面,体,组,槽的转换。刚性体模型不能转换到FLAC3D,必须把block划分成zone才能进行转换,在3DEC内直接的转换方式为:File>Grid>Export to FLAC3D...。转换时可以选择ASCII Format,也可以选择Binary Format。二进制文件的尺寸比文本文件的尺寸小,读入速度快,因此,一个经验规则是在调试程序时使用文本文件,可以观察文件内容,在执行程序时使用二进制文件。
2 命令
将 3DEC单元和节理导出到文件以创建 FLAC3D的单元和单元节理(zone joint)。FLAC3D单元的组名和槽将与 3DEC中的块组(block groups)相等。面将被分配与槽“jset”中的节理ID相关的组名。然后可以使用命令【zone joint create by-slot "jset"】创建单元节理。生成的单元节组名称将是附加 n 的关节集 ID,其中 n 是分隔与其他节理交叉的面所需的递增数字。
由于引入了zone joint命令,因此去掉了原来的face-groups和zone-groups关键字,分别放入*FACES和*ZONES内:
(1) face-groups [true/on] 输出用户定义的face group名称(不是joint set ids)。默认情况下,不输出face group名称。
(2) zone-groups [true/on] 输出用户定义的单元组名(不是块体组)。默认情况下不输出。
3 工作原理
3DEC转换成FLAC3D后,会产生两个同名但不同扩展后缀的文件,一个是网格文件*.f3grid, 一个 *.dat文件,*.dat文件的内容如下所示。
zone import 3.f3grid
zone interface create-from-3dec
fish define interface_group
loop foreach local ip interface.list
local int_name = interface.name(ip)
local pos = string.find(int_name, '_')
local ip_grp = int_name(1, pos - 1)
interface.group(ip) = ip_grp
;
loop foreach local el interface.elem.list(ip)
local facenum = interface.elem.host.face(el)
local hostzone = interface.elem.host.zone(el)
local dfngroup = zone.face.group(hostzone,facenum,'dfn')
if dfngroup != 'None'
interface.group(ip,'dfn') = dfngroup
endif
end_loop
end_loop
end
[interface_group]
转换程序将3DEC的单元导出到*.f3grid中,将节理导出到*.dat中,使用interface_group创建FLAC3D的interface。FLAC3D单元将被分配到与3DEC中的块组相同的组名和槽位(slot)。如果Merge-Join设置为 "true",那么单元也将被分配与slot ID相同的组名。faces将被设置成在slot "jset "中与节理ID相关的组名。
4 FLAC3D文件格式
导出的*.f3grid文件由以下几部分组成:
*GRIDPOINTS
*ZONES
ZGROUP "rock" SLOT "Default"
*FACES
* FACE GROUPS
FGROUP 10 slot jset
单元型式有:
B8 – brick单元
W6 – wedge单元
P5 – pyramid单元
B7 – degenerate brick单元
T4 – tetrahedral单元
5 结束语
block to-flac3d命令现在能识别3DEC的block contact join-by-contact on命令,导出到FLAC3D后现在能使用hybrid bolt单元。与此命令相关的三个新命令为:
(1) block join-by-contact
(2) zone joint
(3) structure hybrid,新的版本正逐渐去掉sel hybrid,改用统一的structure hybrid命令。