1 引言
单元类型以及单元的质量影响着数值模拟的结果。尽管一个项目使用的划分方法不能完全照搬到另一个项目中,但必须遵守一些通用的规则。在过去,曾经讨论过与FLAC3D相关的一些单元划分规则,这个笔记着重强调了3DEC的单元划分。
第三方的网格生成器(Grid/Mesh Generation)---Pointwise,CUBIT和HyperMesh
3DEC提供了非常强大的块体划分能力,第一种方法是似随机方法,多次使用block cut joint-set命令即可产生出任意角度和任意尺寸的块体;第二种方法是真随机方法,使用断裂模板产生离散断裂网络fracture template create和fracture generate dfn (离散断裂网络 (DFN) [P2]: fracture generate)。不过,无论使用哪种方法,都会产生一些非常薄或者非常小的块体,这导致了当块体发生大变形时(小应变和大应变),系统会出现错误信息,如显示负体积单元(negative volume zone) 或坏的面法线向量(bad face normal)。因此在运行之前,需要检查块体的几何形状是否合适。
2 检查途径
通过range设定检查变量的上下限,使用block group命令识别那些有问题的块体。可以同时设定5种变量从不同角度进行检查
(1) range volume fl fu
体积检查---选择体积在指定下限和上限内的块体,这个选项用来识别体积非常小的块体。
(2) range edge-length fl fu
边长检查---选择最小边的长度在指定上限和下限之间的块体,这个选项用来识别体积大但可能有非常小的边长的块体,如果边长非常小,那么很难划分单元。
(3) range aspect-ratio fl fu
长宽比检查---选择最大长宽比在指定上限和下限之间的块体,长宽比定义为最大边长除以体积的立方根。一般来说,很难划分长宽比大于10的块体,并且在计算时可能会引起数值问题。解决方法是将这些长而薄的块体切割成具有较好长宽比的短块的组合。
(4) range face-area fl fu
块体面的面积检查---选择指定上限和下限之间的最小面面积的块体。这个选项与边长检查类似,有助于识别体积可能不太小,但有非常小的面的块体。
(5) range concave
凸凹性检查---选择呈凹陷(concave)的块体。这是由于在切割块体的操作中,可能会导致某些块体略微凹陷。尽管这些凹陷的块体仍然可以划分成单元并且能够运行,但凹面块体之间的接触检测和力的计算可能不准确。
一旦识别出来,如果在大应变下运行,具有不良几何形状的块体通常可以被删除。如果在小应变下运行,则不建议这样做,因为这样做会在模型中留下无法关闭的缺口。如果坏的块体成功地划分成单元,它们可以设置为弹性以防止虚假的塑性变形;如果它们没有被成功地划分成单元,就设置成刚性体,因为3DEC可以同时运行刚性块体和可变形块体。
3 试验例子
下面显示的例子是由DFN产生的块体模型,共有2390个块体,然后使用上述准则进行检查,结果发现face-area,edge-length,aspect-ratio这三项都有问题:
block group 'bad_face' slot '1' range face-area 0 0.0001
block group 'bad_edge' slot '2' range edge-length 0 0.005
block group 'bad_aspect' slot '3' range aspect-ratio 10 1000
为了得到合适尺寸的块体,一种方法是试着使用fracture combine angle命令合并其中的一些小的断裂,另一种方法是阻止断裂继续生成,这包括使用mass-density, p10和fish-stop关键字。在fish-stop中,可以联合使用下面的FISH函数改善块体的生成:
fracture.area
fracture.len
fracture.ddir
fracture.dip
fracture.density
4 其它检查途径
事实上还有其它一些块体检查方法,例如使用z.vol可以检查个别块体的体积【it.zone.near((5,5,5))>z.vol()】; 或者使用BLOCK CYCLE 0>BLOCK ZONE LIST STATE命令确保不产生负单元体积;或者使用block zone list ratio命令检查块体的长宽比。