mike21fm网格生成器中文教程.docx
《mike21fm网格生成器中文教程.docx》由会员分享,可在线阅读,更多相关《mike21fm网格生成器中文教程.docx(19页珍藏版)》请在冰豆网上搜索。
mike21fm网格生成器中文教程
MIKE21FM网格生成器培训教程
MzGeneric.pdf手册中MeshGenerator部分
17简介
网格生成器(meshgenerator)为制作三角网格提供了工作平台。
创建合理的网格是模型获得可靠结果的重要条件。
基于MIKEZero之上的MIKE21FlowModelFM,MIKE3FlowModelFM和MIKE21SpectralWaveModelFM,都是以三角网格为基础的。
图17.1全球模型的陆地/海洋边界
网格的生成包括选择适当的模拟围,确定地形网格的分辨率,考虑流场,风场和波浪场的影响,为开边界和陆地边界确定边界代码。
此外,在考虑稳定性的前提下,确定地理空间的分辨率。
生成网格文件可以使用MIKEZero网格生成器。
网格文件是一个ASCII文件(扩展名*.mesh),其中包括地理位置信息和在网格中每一个节点的水深。
文件还包括三角形的节点连通性信息。
所有关于生成网格文件的配置信息都在网格定义文件(扩展名*.mdf)中,文件可以被修改和再利用。
网格生成器的功能包括从不同的外部信息源(例如.XYZ水深点,XYZ等值线,MIKE21矩形网格地形,MIKEC-MAP数据)输入原始数据,或是用置的制图工具手动创建地形数据。
用户可以在网格生成器中导入背景图片,例如地图,在数据编辑时使用它们,或用来提高图形的后处理效果。
17.1概念
网格生成器的使用不断地围绕着节点(node),顶点(vertice),弧线(arc)和多边形(polygon)的操作。
因此,了解这些概念的含义是非常重要的。
∙节点定义了一个弧的开始和结束。
一个封闭的弧只有一个节点,开放的弧有两个节点。
∙弧的部点叫做顶点,主要用于弧的定位。
∙一个弧是由许多线段组成的,组成弧的主要要素是顶点(零个或多个)和节点(一个或两个)。
∙多边形是一个闭合的环,它由一个封闭的弧线,或两个或多个打开的弧线组成。
多边形不需要用户特别定义,当封闭一个或一组弧线时会自动产生一个多边形。
一个多边形可以被定义为一个区域(Zone),区域的名称由用户给出。
通过定义区域,多边形可以被包含入或是排除出模拟区域。
实际上,网格生成器的工作区域最终应该生成的是一个大的多边形,这个大多边形确定了区域的围和部的小多边形,这些小多边形确定了区域围的陆地子区域。
图17.2网格生成器的概念
注意:
模型区域(DomainArea)和工作区域(WorkspaceArea)是不同的概念,模型区域是指使用数学模型所要模拟的实际空间围,工作区域是指网格生成器进行网格操作的工作围。
模型区域是工作区域的一个子集。
网格生成器的应用包括三个阶段:
1、确定模型边界–闭合边界(陆地-海洋)和开边界(参见BoundaryDefinitions)。
用户可以通过导入陆地-海洋边界文件,或是在工作空间围手动操作生成模型边界。
2、如果你对模型的边界满意,此时就可以生成一个与水深无关的网格。
你可以通过控制三角形最大面积、三角形最大扭曲度,区域最大节点数来控制三角形的生成。
3、最后,按照单元中心的水深值,程序会进行网格稀疏的自动调整。
当然,这需要用户导入水深信息。
你可以在工作空间围定义多个独立的多边形,每一个多边形的网格细化都可以是独立的。
17.2边界定义
用户使用点的属性参数来区分陆地边界和开边界。
定义点的属性参数操作如下:
选择一个节点(或多个),右击并选择属性。
从PointProperties对话框中添加节点属性值,如图17.3所示。
图17.3确定节点属性值
字段属性的具体数值是无关紧要的(在对话框中字段被标注为a)。
这些值被用来区分网格中不同的开边界。
在模型搭建过程中,用户需要把网格制作中定义的数值和具体的开边界联系起来。
对于闭边界(水陆边界),统一使用‘1’。
注意:
当生成网格时,网格生成器默认所有的边界都是陆地边界。
所以,你需要为所有的开边界手动定义属性值。
提示:
可以选一个弧并确定弧的属性值,这个属性将应用于弧上所有的点(顶点和节点)。
18开始
18.1介绍
本章简短地介绍了如何使用网格生成器(MeshGenerator)来生成网格地形。
下面的例子将通过Funningsfjord网格实例向用户演示如何生成一个网格地形。
这个例子包含以下步骤:
步骤1–建立一个工作区域
步骤2–导入模型边界线
步骤3–编辑陆地边界线
步骤4–定义开边界
步骤5–生成网格
步骤6–对陆地边界进行光滑处理
步骤7–网格地形插值
步骤8–对网格进行光滑处理
步骤9–使用多边形来控制节点密度
18.2数据位置
例子中用到的数据文件位于默认的安装位置,即:
c:
\ProgramFiles\MIKEZero\Examples\MIKE_Zero\MeshEdit文件夹.
18.3步骤1–建立一个工作区域
从MIKEZero文件菜单中选择New然后选择MeshGenerator。
用户必须在MeshGenerator创建工作区域之前对要操作的网格的投影进行定义。
一开始程序会提示输入投影设置,如图18.1所示。
图18.1工作区域投影
注意:
如果你想使用UTM坐标投影的话,你必须输入一个UTM区号。
请参见ReferenceGuide来对了解如何选择UTM区。
请选择UTM坐标投影并且输入30作为UTM区号。
MeshGenerator会创建一个工作区域,然后你就可以初始化mesh的创建过程。
18.4步骤2–导入模型边界线
模型边界包含两个种类:
●陆地和水之间的边界,称之为陆地边界。
●模型模拟时,应用边界条件(水位,流量变化或者波谱)的地方。
这些边界被称之为开边界。
定义模型边界最简便的方法是通过使用MIKEC-MAP。
MIKEC-MAP是一个包含全球所有海洋水深和陆地-水边界的数据库。
你可以在MIKEC-MAP中对一个特定区域进行放大,并将陆地-水边界和水深值导出到MeshGenerator进行使用。
在这个例子里面,使用了从MIKEC-MAP里面导出的两个数据文件:
∙Land.xyz,定义陆地边界
∙Water.xyz,定义区域一系列点的水深
图18.2显示了提取数据的区域。
图18.2Funning海湾
从Data菜单里面选择ImportBoundary…并且选择land.xyz文件。
选择land.xyz文件后,会出现如图18.3所示的BoundaryAttribute对话框。
图18.3边界属性
在菜单里面你可以对land.xyz文件的布置,数据的投影和如何对数据进行插进行定义。
ReferenceGuide提供了导入格式的详细信息。
请对图18.3中的数值进行定义。
注意:
此处定义的LONG/LAT投影说明在land.xyz文件中的数据是纬度和经度。
MeshGenerator会将经纬度转化成在UTM-30投影坐标中的东向和北向的坐标。
网格生成器读取数据文件并更新工作区域,如图18.4显示。
图18.4导入的边界数据
在本例中,因为我们只模拟Fjord海峡本身,所以只生成海峡的网格。
从图18.4中可以看出,模拟的区域包括:
∙模型区域东北角的一个模型开边界
∙沿海峡东部和西部的陆地边界
下一步包括清理工作区域不必要的陆地-水边界点。
18.5步骤3–编辑陆地边界线
在这一步骤中,需要删除图18.4所示的模型区域外的所有点。
首先删除工作区左边的点和弧线。
选择工具栏上的Deletebutton(橡皮擦图标),然后选中窗口左区域中的点和弧线进行删除。
如下图18.5所示。
图18.5删除点和弧线
用户可以画一个矩形框住多个对象将它们快速删除。
按照下面步骤删除工作区右上角的点和弧线:
在编辑工具栏上选择Delete键,按住左键后拖拉鼠标框中右上角的这些点和弧线,完成后放开左键,这样选中的点和弧线就被删除了。
也可以画出一个多边形圈选所要删除的点,然后按键盘上的Delete键来进行删除。
请按如下步骤操作:
1、在编辑工具栏上选择SelectPointfunction
2、右击鼠标,在显示的上下文菜单中选择InsidePolygon
3、右击鼠标添加polygon的角。
沿着窗口左上角的陆地线画一个多边形
4、双击鼠标左键,完成这个多边形
5、按键盘上的Delete键,将多边形中所有的点删除
参见图18.6。
图18.6多边形选择
最终得到的陆地边界如图18.7所示。
注意图中以下几点:
∙图18.7中所示的陆地边界是一个开放弧线(有两个节点)。
这是通过把所有陆地节点转化为顶点来实现的。
在这一过程中要确保陆地边界上所有的洞都要封闭-这取决于你之前是如何清空它所在的工作区的。
∙在模型区域右上角画出一段新的弧线来封闭海峡。
新的开边界和陆地边界采用相同的两个节点。
这段弧线是通过选择DrawArc工具,然后点击海峡段两边的nodes来生成的。
该开边界弧线有以下两个作用:
1、定义一个可设置边界条件的开边界
2、生成一个多边形来封闭模型区域。
这样该模型区域就可以三角化了,因为只有封闭区域(多边形)才能被三角化。
图18.7生成的陆地边界
18.6步骤4–定义开边界
区分陆地边界和开边界是非常重要的。
正如步骤3-边界陆地边界线中所描述的,图18.4所示的模型区域同时有一个陆地边界和一个开边界。
网格生成器将所有的边界默认为陆地边界。
用户必须自己将右上角的边界定义为开边界。
在EditingToolbar中选择SelectArc工具,然后选择OpenBoundaryArc。
右击鼠标,选择Properties.在出现的对话框中将ArcAttribute设为2。
这样模型模拟程序就会将属性值为2的弧线判断为一个开边界。
注意:
弧线–结点属性值–的默认值都为0.当导出一个生成的网格时,所有的弧线和节点的属性值会从0变为1。
属性值1代表了陆地边界。
因此需要用2或者更高的属性值代表开边界。
对赋予同一边界条件的边界节点和弧线需使用相同的属性值。
18.7步骤5-生成网格
现在,用户可以生成网格了。
请在Mesh菜单中选择Triangulate选项,于是出现Triangulation的对话框。
在Triangulation对话框的Option栏中(如图18.8所示),用户可以通过设定参数从而控制网格的生成过程。
图18.8Triangulation
点击Triangulate,然后点击Generate,网格生成器就会自动计算并生成网格,如图18.9所示。
图18.9生成的网格
18.8步骤6-对陆地边界进行光滑处理
如果生成的三角网格不够理想,譬如,靠近陆地的网格过小,用户可以有多个不同的方法来修正。
其中之一就是对陆地边界进行平滑处理。
在Mesh菜单中,选择DeleteMesh选项,然后选择LandBoundaryArc,点击鼠标右键并选择Redistributevertices,就会出现RedistributeVertices对话框,见图18.10。
图18.10重新分布顶点对话框
在Redistributevertices对话框中(如图18.10)设定参数,然后点OK。
注意:
用户在接受新的结果之前,应该先预览生成的边界。
如果地形很复杂,可能新产生的陆地边界无法被模型接受。
如图18.11所示,新生成的陆地边界比原来的平滑。
图18.11光滑处理后的陆地边界
在新的陆地边界基础上生成的三角网格如图18.12所示。
注意:
新的边界线上的点比原来“粗糙”的边界线上的点(见图18.9)排列规则。
图18.12陆地边界光滑处理后生成的三角网格
18.9步骤7-网格地形插值
用户可以细化网格,将生成的三角形与水深关联起来。
一般来说,浅水区三角形要比深水区的要小。
请按照如下步骤:
1、删除网格
2、用编辑工具栏的InsertPolygon工具在峡湾插入Polygon标记,使用Selecltpolygon工具,选中多边形标记,点击鼠标右键,选择Properties。
反选第一个记号框,确保该区域包含在三角化区域中。
3、生成网格-在Mesh菜单中选择Triangulate…菜单项
在网格节点插入Z值之前,必须导入插的离散数据。
用Data菜单ImportScatterData…导入离散数据。
清选择water.xyz文件,指定LONG/LAT投影。
在导入数据后,显示图形应该如图8.13所示。
图18.13离散数据视图
现在可以将导入的离散数据插到网格节点中。
在Mesh菜单中选择Interpolate…。
接受默认值(defaultvalue),选择Interpolate。
插结束后,点击Close按钮,插后的网格深度以等高线图显示。
结果见图18.14。
图18.14等高线图
现在可以细化网格来考虑水深。
在Mesh菜单中选择Refinemesh…,接受默认值(defaultvalues),点击Refine按钮。
经过细化的一系列子网格如图18.15所示。
图18.15细化的网格
现在可以注意到靠近陆地的三角区的面积比峡湾中间的三角网格要小。
18.10步骤8-对网格进行光滑处理
通常,必须保证相邻的三角形之间的面积和偏斜度变化越小约好,即,在网格的不同区域创建平滑的过渡。
在Mesh菜单选择Smothmesh…,确定10作为迭代数目。
在图18.16种可以看到网格经过平滑后效果。
图18.16平滑效果
18.11步骤9–使用多边形来控制节点密度
一般情况下,在整个模型区域的局部地区可能需要比其他地区更为精细的分辨率和网格密度。
用户可以通过Step7描述的以水深来进一步细分网格,进而在一定程度上达到局部加密的目的。
另外一种方式就是把模拟区域划分成不同的子区域,或者叫多边形区域,然后针对不同区域定义不同的最大单元面积。
这种方法可以使用户更为灵活地、根据不同的水深来控制网格的生成。
在本练习中,用户就需要在海峡定义较海峡外部小的三角形网格面积,来生成网格。
请通过mesh菜单下的Deletemesh把网格删除。
这样用户就可以把模拟区域划分为两个子区域–部和外部。
请通过把海峡中间的两个顶点转换为节点(右击顶点,然后选择Verticestonodes)来进行子区域的划分,然后在两个顶点之间画一段弧线,这样就完成了子区域的划分,见图18.17。
图18.17划分子区域
注意:
在上图中,在两个节点之间还画了一系列的顶点,网格生成器将使用这些顶点来生成网格。
这样,用户就可以控制子区域公共边的网格分布。
然后,用户点击工具条中的Insertpolygon、然后分别点击外部和部区域在两个子区域中来定义一个多边形标记,如图18.18。
图18.18定义多边形标记
现在,用户需要选择子区域来定义最大单元面积:
请点击工具条中的SelectPolygon工具,选择部区域,然后右击并选择Properties,用户将看到如下对话框,如图18.19。
图18.19多边形属性对话框
请确认没有选择“ExcludefromTriangulation”,并定义最大单元面积为5000。
对外部区域重复同样的步骤,但是最大单元面积定义为15000。
现在,用户就可以生成三角网格,在Mesh菜单下,选择Triangulate…。
结果如图18.20所示。
图18.20不同子区域三角网格的生成
上图清晰地表明,现在海峡的部区域要比外部区域的三角网格更为细致。