1. 引言
在上一个笔记《建立更真实的数值模型:FLAC3D导入地形图 (1)》中,讨论了如何使用SketchUp把Google地图导入到FLAC3D中,尽管沿着这条路径走下去还有许多工作要做,但已经迈出了半里长征的第一步,以后会逐步完善这种方法。今天的笔记顺着上一篇的思路但使用了不同的方法---“沙箱创建地形geometry”来讨论如何把一个自由产生的曲面geometry与FLAC3D集成在一起,从而形成复杂地形的三维计算模型。与上一篇描述的流程一样,首先需要在SketchUp内创建地形,然后把地形导入到FLAC3D中。
2. 使用沙箱创建地形geometry
我们的目的是使用沙箱功能在SkecthUp中创建.stl格式的地表形状。废话不讲,按照下面的步骤顺序操作:
【1】启动SketchUp后,建立一个新的文件,首先检查单位设置,参看《建立更真实的数值模型:FLAC3D导入地形图 (1)》,然后从菜单“视图->工具栏”中选择“沙箱”,关闭窗口。
这时工具栏内会出现“沙箱”的工具集,包括7种工具,这7种工具的含义从左到右依次为:
(1) 根据等高线创建沙盒;
(2) 根据网格创建沙盒;
(3) 曲面起伏;
(4) 曲面平整;
(5) 曲面投射;
(6) 添加细部;
(7) 对调角线
如同任何标准的Windows程序一样,沙箱的这些工具你也可以在菜单中找到,如下图所示。
【2】选择“沙箱”工具栏中的第二项“根据网格创建沙盒”,系统出现如下提示
不知道为啥默认的栅格间距定义为3m, 感觉有点太大了,改为2m, (注意这个栅格值最好与后来FLACD3D的网格值设置为一样)然后输入所需表面的长度和宽度,我都输入了50m (注意这个值也应该与后来FLAC3D Block的尺寸对应), 于是形成了如下图所示的平面。
【3】创建完平面后,从沙箱工具栏中选择第三项“曲面起伏”,
并定义平滑的半径。这个半径表示更改曲面时受影响区域的距离。
由于是演示,随便产生一些曲面,如下图所示。
【4】将曲面输出为.stl文件,保存文件名为su-slope.stl,准备将其导入FLAC3D。
3. FLAC3D导入地形geometry
【1】打开FLAC3D程序,首先使用geometry工具输入su-slope.stl,检查这个曲面的坐标,包括x,y,z的坐标范围,这一点非常重要,否则这个曲面不能与FLAC3D 的block正确地衔接在一起。FLAC3D手册关于这一点有非常详细的描述。不过,如果不动手去试验,很难确切理解它表述的意思。
【2】对照着su-slope.stl的坐标范围,写一个FLAC3D的数据文件:
; Created on 6/2/2020 by GeotechWu
model new
model deterministic on
model precision 6
model random 10000
geometry import 'su-slope.stl' ;importing the surface topography in .stl format
zone create brick size 50 50 10 ...
point 0 0, 0, -20 ...
point 1 50, 0, -20 ...
point 2 0, 50, -20 ...
point 3 0,0,-10
zone group 'Rock'
zone generate from-topography geometry-set 'su-slope' segments 10 ratio 1 group 'Sand'
这样便顺利把.stl曲面文件集成到FLAC3D的模型中。
下面简要解释一下这段代码的工作机理:
(1) 首先使用 geometry import 'su-slope.stl'命令把.stl文件导入到FLAC3D中;
(2) zone create brick命令用来产生底部绿色的块体,然后把这部分块体使用命令zone group 'Rock' 定义为一组;
(3) zone generate from-topography geometry-set 'su-slope' segments 10 ratio 1 group 'Sand' 划分曲面单元,并且定义组名。
4. 其它的例子
下面演示的例子均来自FLAC3D手册。
【1】这个例子与上述我们的例子相同。假定我们在SketchUp中产生出一个曲面文件surface1.stl, 使用下面的代码产生FLAC3D模型。这部分没有什么难的地方,应该注意的只是如何设置brick的尺寸和坐标值。
model new
geometry import 'surface1.stl'
zone create brick size 50 40 5 ...
point 0 0 0 -4000 ...
point 1 15000 0 -4000 ...
point 2 0 12000 -4000 ...
point 3 0 0 -2000 ...
group 'Layer1'
zone generate from-topography ...
'surface1' ...
segments 8 ...
group 'Layer2'
【2】下面这个例子使用了关键字range position-x 0 5000 position-y 0 5000取曲面的一部分。这个也没有什么难理解的, 只是没有想到什么场景下需要这么作。
model new
geometry import 'surface1.stl'
zone create brick size 50 40 5 ...
point 0 0 0 -4000 ...
point 1 15000 0 -4000 ...
point 2 0 12000 -4000 ...
point 3 0 0 -2000 ...
group 'Layer1'
zone generate from-topography ...
'surface1' ...
segments 8 ...
ratio 0.6 ...
group 'Layer2' ...
range position-x 0 5000 position-y 0 5000
【3】下面这个例子显示了与geometry set 命令联合建立多个地层。
model new
geometry import 'surface1.stl'
geometry set 'surface2'
geometry polygon create by-positions ...
0 0 -2000 ...
15000 0 -3500 ...
15000 12000 -3500 ...
0 12000 -2000
zone create brick size 50 40 5 ...
point 0 0 0 -6500 ...
point 1 15000 0 -6500 ...
point 2 0 12000 -6500 ...
point 3 0 0 -5000 ...
group 'Rock'
zone generate from-topography geometry-set 'surface2' ...
segments 5 ...
ratio 1.0 ...
group 'Sand'
zone generate from-topography geometry-set 'surface1' ...
segments 8 ...
ratio 0.8 ...
group 'Clay'
5. 结束语
本文描述了使用SketchUp的沙箱功能建立曲面的几何形状,并且无缝集成于FLAC3D的模型中。显然,这种自由生成的曲面不能代表真实的地形。接下来要作的是从Google地图中提取地形等值线,利用沙箱工具建立地形曲面,然后再集成到FLAC3D模型。