我是 CFD 领域的新手。什么时候应该使用结构化网格,什么时候应该使用非结构化网格?(是的,这在很大程度上取决于问题的几何形状)更具体地说,我想知道所需的计算能力、达到的精度以及两种类型的网格所涉及的工作量的差异。什么是用最简单的语言解释结构化和非结构化网格的好资源?
结构化网格和非结构化网格
我目前正在非结构化网格上实现结构化网格原生的 VoF 方法(欧拉网格上两相流模拟的几何方法),所以这是我迄今为止的经验(请注意,我所写的内容来自使用特定的实现):
非结构化网格:
优点
- 快速生成复杂几何形状的网格
- 网状拓扑的简单操作
- 四面体网格:边缘交换,细化
- 六面体网格:基于八叉树的细化(用 2 个平面分割单元)
- 滑动网格界面(旋转几何等)
- 建立在这种网格之上的有限体积法:它很健壮,方法的并行化很简单,边界条件的实现很容易
缺点
由于较小的单元格模板而降低了精度:您只能访问单元格的面邻居(对于不同的网格实现,这可能会有所不同,但在我的情况下是这样)
由于模板较小,高阶插值方案(WENO,ENO)的实现非常困难(并行化问题)
为倾斜方向传播的尖锐场(涉及来自点邻居的信息)重建梯度并不简单
结构化网格
优点
比非结构化网格具有更高的精度:您可以访问各个方向的点并构建大型模板
基于八叉树的网格细化:使用八叉树数据结构表示网格,因此顶层几何是一个盒子
细化比非结构化要快得多(在非结构化网格上,完整的网格被复制和膨胀)
缺点
为了处理物体的相对运动,使用了复杂的浸没网格(嵌合网格)(大多数不是质量保守的)
如果你需要一个边界一致的网格,你可以为弯曲的边界做,但是离散化然后被转换成曲线坐标系
主要用于盒子形状的流域(但是,八叉树细化和单元切割方法允许在盒形域内完全复杂的几何形状)
因此,如果您有一个盒装域和一个复杂的几何结构,并且您需要高精度,请使用结构化网格。
另一方面,如果域边界的几何形状很复杂(例如金属合金铸造成复杂的模具),请使用非结构化网格。此外,如果模拟需要物体的相对运动,则可以选择非结构化网格,因为嵌合体库很难获得(基于军事的研究)。
另一个问题是您可以以什么成本获得什么,例如:许可费、学习开源库所需的时间等。
正如您自己提到的,这在很大程度上取决于所涉及问题的几何形状,还取决于所使用的计算框架(即 FEM、FDM 或 FVM)。
有限差分方法 (FDM) 通常仅限于不需要特殊数据结构来记录网格信息的结构化网格。话虽如此,FDM 可以通过使用更复杂的数据结构扩展到半结构化网格,例如基于自适应四叉树或八叉树的网格。然而,结构化网格更易于编码和开发。此外,对于这种类型的网格,域分解和并行化通常是微不足道的。它们通常适用于简单的域,但是已经开发了某些方法,例如浸入式边界或浸入式界面方法,这些方法甚至可以将这种类型的网格用于非平凡的几何形状。
另一方面,有限体积法 (FVM) 和有限元法 (FEM) 通常更通用,可以(统一)处理各种几何形状。然而,这是以使用更复杂的数据结构为代价的,这会导致更复杂的算法和更多的开发时间。它们通常更难并行化,因为现在应该将网格划分为子域,然后再将它们发送到不同的处理器。话虽如此,针对特定任务(例如预处理器、线性求解器和图形分区器)的编写良好的软件包的存在以及它们的稳健性和多功能性,使它们成为考虑非平凡几何图形的绝佳选择。
最后,无论您选择哪种类型的方法(以及网格),所有三个不同系列中都有高(昂贵)和低(便宜)顺序方法,您可以针对您的特定问题进行选择。