网格剖分
网格剖分的用时一般比计算分析和出报告时间还要长,部分统计结果表明网格占据CAE分析73%的时间成本。对于有复杂地质断面的地质模型如隧洞、边坡、坝基等,三维模型的网格剖分往往是一个痛苦的过程,网格生成时间往往需要数周到数月。
虽然网格剖分是有限元前处理最重要的组成部分,但是目前该领域的市场主要被传统的CAE软件占据。大家熟悉的软件工具有ANSYS、HyperMesh、ABAQUS、ANSA、Cubit、Midas这些。尽管这些软件厂商财大气粗,收购兼并了很多优秀企业和算法。即便如此,在三维地质建模领域生成高质量的有限元网格依然是一个很大的挑战。
图1 常用网格剖分三剑客 ANSYS、HyperMesh、ABAQUS
MetaMesh程序简介
MetaMesh是我们团队自主开发的一款网格剖分程序。在2010年大三的时候第一次使用ANSYS经典界面剖了一个带孔的板,便对网格自动剖分程序产生浓厚的兴趣。2011年来岩土所直博后参与了多个科研项目,一直都围绕着工程数值模拟来转。网格剖分工具也历经了ANSYS——ABAQUS——Hypermesh——Griddle——Cubit这些常用程序。当然,其他手头能找到的一切网格剖分软件也都尝试过,像GOCAD、GID、Gambit、ANSA、TrueGrid、ICEM、Midas、Gmsh这些。虽然这些软件都很优秀,但是在处理地质建模时候依然感觉很痛苦。复杂的地质断面切割会导致三维几何模型异常复杂,往往会出现模型不封闭和局部畸形的情况,依然让人很头大。
16年我博士毕业留在岩土所任教,在授课过程中也遇到要给学生讲解画网格的问题。由于这些传统商业软件都是好几个G的大家伙,学生的电脑性能差异比较大,这是一个很痛苦的过程。我后来就在教学过程中优先采用开源的Gmsh。当时我还基于这个程序开发过一个做数字图像处理的开源程序DigiSim,我的网格底层算法研究之旅也是从那个时候开始的,大家有兴趣科研看我的公共号文章,链接如下:
开发一款好用的地质网格剖分软件一直是我认为一件很酷的事情。但是网格剖分软件涉及大量的CAD运算,对于年轻教师是一个几乎不可能完成的事情。2019年左右我偶尔接触了Kubrix/Griddle这个基于三维建模软件Rhino的插件。其实我也是Rhino的近十年的老用户了,让我觉得基于开放的商业CAD程序做一个网格剖分程序还是有希望的。
图2 数字图像网格生成工具DigiSim
几年来感谢各大设计院、科研院所和高校朋友的支持,我也有幸负责了一些小项目养家糊口。空闲之余我便开始了MetaMesh网格剖分软件开发的折腾之旅。虽然作为至今还没有把C++搞清楚的野生程序员,但是一点点像蚕食桑叶一样慢慢磨,还是马马虎虎做了一个小工具。这两年也有志同道合的朋友一起加入,想做一点让自己觉得还比较酷的事情。于是,在32岁生日的这天,我迫不及待各位隆重介绍我们的网格剖分程序MetaMesh。
图3 MetaMesh安装过程
MetaMesh程序基本原理与优势
MetaMesh是基于Rhino开发的网格插件,程序原理其实十分简单。遵循CAD模型——不透水网格模型——边界特征提取——边界约束剖分——网格优化——数据管理——模型输出这一常规流程思路。这其中Rhino的CAD界面交互和Nurbs布尔运算给了我们很大的便利性。一度我想把Gmsh的部分剖分算法引入我的程序,但是该程序商业授权是比较贵的,要1万欧元,经费并不宽裕的我也就放弃了这一条路。开发过程中我回顾了Cubit和Gmsh这些程序的开发历程,给了我极大的鼓舞。
MetaMesh的算法还是很简单和传统的,所用的算法网上都有相关论文,很多都还有开源代码的,如图4所示。在这里申明一下,我只是采用了部分LGPL协议的开源代码,主要程序和交互逻辑都是我设计的。坦诚地说,我目前还没有创造出新的算法,我也衷心希望10年内能在这一领域做一点感觉还拿得出手的算法。
图4 MetaMesh安装过程
与常规软件有啥区别呢,我要在这里自吹自擂一下,我们的优势有以下几点:
(1)普适的网格生成算法:在用户熟练掌握我们的工具后,可以剖分任何过程几何模型;只要你有模型,我就能给你网格;
(2)高质量的生产力工具:对于复杂的三维地质建模,我们一般可以控制在一周左右完成;网格的数量和质量方面我们敢于叫板Hypermesh这些巨兽;
(3)灵活的边界约束定义:可以很方便得添加线约束和面约束,这一点对于保持网格形状,生成空间结构面有很重要得意义;
(4)多维度单元分组:MetaMesh将实体单元信息存储在拓扑封闭得面网格内部,可对模型进行随意分组和修改;
(5)完美支持结构单元:考虑到岩土过程得特殊性,我们软件内部支持常见的结构单元的生成,如锚杆、锚索、衬砌;
(6)待发掘:您的需求就是我的成长。
图5 某引调水工程隧洞三维网格模型
图6 引水隧洞优雅的弧线和结构化网格