1 引言
在《Griddle划分非结构化网格(FLAC3D和3DEC)》中首先使用Cylinder和Mesh命令初步划分三角形网格,然后使用GSurf和GVol命令生成非结构化以六面体为主的网格。对于这样一个圆柱体,如果想使用BlockRanger产生结构化的网格是不可能的,因为BlockRanger只能对四面、五面或六面的实体(不是表面网格)进行操作,而圆柱体只有三个面。如果非要进行这样的操作,则会产生错误信息"遇到不支持的实体(只支持六面体、棱柱体、四面体和扫掠形的实体)。请检查高亮显示实体的拓扑结构"。
另一方面,使用Cylinder命令产生的网格是一个整体,用Itasca语言讲,它是一个Group, 如果在圆柱体内想设置两种或两种以上的材料,显然这种方法是行不通的。因此需要使用不同的技术来达到这一目的。
BlockRanger是Griddle的全六面体结构化网格生成器,它的操作原理与非结构化网格器GVol不同。 为了在圆柱体内创建一个结构化的网格,必须将初始实体细分为适合BlockRanger的形状。
(1) BlockRanger (BR) 对实体划分成结构化的六面体网格
(2) GInt 对表面网格相交的部分进行调整,
(3) GSurf 非结构化的表面网格划分,以指定的参数创建非结构化表面网格
(4) GVol 非结构化的四面体/六面体为主的网格划分
(5) GHeal 一组用于识别和修复表面网格问题的工具
(6) GExtract 一组根据用户指定的准则提取部分表面网格的工具
(7) GExtend 一组用于沿指定边界扩展表面网格的工具
(8) GExtrude 一组沿其边界挤压表面网格的工具,用来创建一个密封的区域
(9) NonManifoldMerge---Rhino命令合并表面网格,创建单一的非流形网格
(10) ColorizeObjects---为对象分配随机颜色
基本的想法是首先产生圆柱体的底面形状,划分为不同区域,然后拉伸形成圆柱体。
2 产生底面形状
(1) 首先使用Line和Arc命令产生圆形1/4的几何形状,然后使用Join命令把这些线段和圆弧连接成为一个整体;
(2) 以0点作为旋转中心,使用Rotate命令旋转-90°,90°,180°,从而产生出一个完整的圆形;
(3) 使用Polyline命令画出圆内的正方形;
(4) 使用ColorizeObjects命令对这个5个对象随机着色。至此底面形状完成。
3 产生圆柱体
使用ExtrudeCrv命令把底面拉长,形成一个圆柱体。为了以防出现裸漏的边,使用Cap命令产生封闭的实体。使用边分析工具检查(Surface>Edge Tools>Show Edges)。再次使用ColorizeObjects命令让圆柱体着色。
4 产生网格
使用BR命令产生网格,BlockRanger共有5个选项:
MeshSettings
GenerateSurfaceMesh=None
OutputFormat=FLAC3D
FormatType=Binary
AutoOutputName=N/A
选择GenerateSurfaceMesh = BySolid, MeshSettings>MaxEdgeLength = 0.85。在FLAC3D导入产生出的网格,如下图所示。