Precise distance-based two-dimensional automated mesh generation toolbox intended for coastal ocean/shallow water flow models
OceanMesh2D | 基于精确距离的沿海海洋/浅水流动模型二维自动网格生成MATLAB工具箱推荐
- 1. 简介
- 2. 特点
- 3. 代码基本要求:
- 4. 基本流程
1. 简介
OceanMesh2D是一组用于组装和后处理有限元数值模拟中使用的二维(2D)三角形网格的MATLAB脚本。它的设计考虑到了沿海海洋模型,尽管它可以网格化由多边形包围的任何2D地区。它可以用于根据用户定义的edgelength函数参数来构建不同大小的网格(最多1000-2000万个顶点左右),这些参数控制分辨率在空间中的分布方式。用该软件创建的网格几乎是可复制的,因为它们是可参数化的,并且可以在个人计算机上以几分钟到几小时的量级快速组装。
OceanMesh2D使用面向对象编程(OOP)风格,通过抽象和重载来简化网格生成过程。这些属性减少了函数调用的复杂性和用户需要键入的行数。他们还创建了一致的工作流模式,这些模式是可重复和可识别的。
有四个类:geodata、msh、meshgen和edgefx(图1)。所有类都接受名称/值对参数,并通过键入类名(例如geodata())来创建,这将生成一个class类型的对象。每个类的所有方法都可以通过键入
methods(‘classname’)/help methodname
图1 使用OceanMesh2D构建网格的标准工作流程。
2. 特点
- 基于MATLAB的海岸海洋模型二维非结构化网格生成软件;
- 一组具有预处理和后处理实用程序的MATLAB函数;
- 网格分辨率根据各种特征驱动的几何和地形测深函数进行控制;
- 顶点沿网格边界的位置根据网格大小函数自动调整,无需轮廓简化算法;
- 可以生成高质量、多尺度、非结构化的mesh网格。
3. 代码基本要求:
- MATLAB(在2015a到2018b之后的版本上测试) 64位Windows、Linux和Mac OS以及以下:
- (免费)工具箱:m_map toolbox v1.4 (https://www.eoas.ubc.ca/~rich/map.html)
- optional:数字高程模型(digital elevation model, DEM)。
- optional:表示要网格化的区域边界的shapefile。
4. 基本流程
第一步:网格范围及参数:
- 设置关键的网格
- 参数网格范围、尺度、梯度
第二步:geodata→地理数据集处理:
- 高程数据→如SRTM15+.nc等;
- 岸线数据→如GSHHS_h_L1
第三步:edgefx→网格边的设置:
- 设置边长范围、网格梯度等
- 一些列和网格边相关的参数
第四步:meshgen→生成网格并校准:
- 设置最大迭代次数
- 确保网格的稳定性和有效性
第五步:msh→可视化及存储:绘制并保存msh类对象
- make_bc识别节点边界条件
- plot、save→存储
获取OceanMesh2D工具箱,可关注微信公众号“UQLearner”,发送“OceanMesh2D”。