“网格” 应用研发入门(3)--面网格算法

科技   2024-09-02 19:27   上海  

面网格生成算法是所有网格算法的基础


深入理解数值计算网格(3)--非结构化网格生成算法(点击链接查看)


深入理解数值计算网格(2)--结构化网格生成算法(点击链接查看)


以上文章对主要的算法做了大概介绍,本文将重点介绍学习实践方法和技术路线。


算法1:Delaunay三角化以及衍生方法


笔者经常称Delaunay为“德隆尼”,实际应该是“德劳内


关于Delaunay方法的书比较多,这里介绍一本:

Delaunay Mesh Generation

作者:Siu-Wing Cheng


该书15章近400页,讲述了二维,三维Delaunay方法,以及约束

Delaunay,加权Delaunay方法,还涉及网格加密,质量改进,四面体生成。

该书英文版,主要讲述原理,没有源码,适合数学功底好的同学。如果想快速上手,此书不合适。


笔者最早参考的是这本书,2005年出版的,现在好像已经买不到了:


开源库:

主流的网格库几乎都有对Delaunay算法的实现。所以称其为Delaunay大法好像也不为过。


项目使用推荐两个开源库:Triangle和detri2。这两个开源库代码都过万,而且最早使用的是C语言,控制参数丰富,功能比较齐全,License宽松,可以闭源商用,使用的话要进行必要的封装,避免重复造轮子。


只要是做网格研发,Delaunay方法必掌握


算法2: 波前法 

深入理解数值计算网格(3)--非结构化网格生成算法(点击链接查看)


波前法的核心思想就是从几何边界开始往内部插点,所以核心涉及到点位置判断,网格质量评估,网格优化。波前法可以支持三角形,四边形,四面体,六面体等各种单元。如果输入信息有基于BREP的几何信息,更容易得到进行数据的计算。


之前做过介绍,可在www.cae-sim.com 下载 pdf文件查看:




以一个极端的例子说明波前法:

有一个长为10,宽为1的长方形,生成网格长度为2的三角形网格。可以看到不管怎么设置初始边,长度为2的网格必定在长方形外,所以需要判断点是否在多边形内部。也就是每一步都必须要实现迭代,至于是二分迭代,还是其它计算迭代,根据实际情况选择,或者设置参数。

学习资源 Gmsh:    http://gmsh.info/

Gmsh工程化做的比较好,适合学习,但License是GPL的,无法闭源商用,使用注意合规。


GMBH是一个特定的德语词汇缩写,代表了“有限责任公司”,注意区分。


波前方是一种比较通用,自动化程度高,但复杂度高的算法。一般的三角化和网格引擎都有实现。做底层网格研发必掌握。


算法3:四叉树/八叉树

关于树的数据结构,早前文章也做过介绍,参考:


工业软件底层技术200个知识点<1-10>(点击链接查看)


深入剖析三维几何内核(7)--一般技术(点击链接查看



以上树结构仅仅用来加速计算,并不用来生成网格。


四叉树适用平面二维网格,八叉树适用三维体网格。四叉树/八叉树实现原理简单,通用性强,适合并行分布式实现。此外八叉树既可以实现六面体,也可以用来生成四面体。


但缺点也非常明显,局部网格质量差,难以调试。进行局部加密时往往也难以保证网格质量。


目前主要在CFD等特定领域实现比较多。


作为通用网格算法,可以了解,不一定要实现。

github上有个不错的开源程序,可以参考:


https://github.com/CMU-CBML/HybridOctree_Hex


在实际网格引擎中,上述三种方法往往同时使用。并且有自适应功能,即根据实际的几何数据选择合适的算法。



“网格” 应用研发入门(2)--输入数据


“网格” 应用研发入门(1)




多物理场仿真技术
可能是国内最专业,最有深度的 CAD CAE EDA CAM TCAD CFD AI等工业软件研发技术介绍和工业软件资讯分析
 最新文章