多面体网格
理论:由众多相邻单元求梯度
概述
听说复杂几何的CFD把四面体网格转成多面体,单元数会大减。精度不会下降吗?
多面体单元常通过把四面体网格每个顶点周围的单元合并成一个来生成。每个单元与十几个相邻单元接触,梯度计算信息多,而四面体只有4个相邻单元。由同样的点生成,单元数大减,但每个单元变大,精度是否真的保持需要确认。我们用同一点云生成两种网格,比较梯度精度。
最小二乘梯度
单元P的梯度按与相邻单元N的值差最吻合来确定。相邻单元越多、方向越多样,梯度估计越稳定。
单元数与面数
由同一点云生成时的参考(用三维Delaunay剖分确认)。多面体单元少,但每个单元面多,由面数决定的计算量不像单元数减少得那么多。
多面体进入通用软件的历程
有限体积法本来就不限单元形状,用穿过面的通量之和表示守恒,所以原理上任何多面体都能处理。但长期以来主流是结构网格和四面体、六面体。21世纪初德国的Perić等人报告,由四面体生成的多面体网格用更少单元达到同等精度,收敛也更好,商用CFD软件于是加入了多面体网格自动生成。作为快速划分复杂几何并控制单元数的方法,在汽车和热流体领域广泛使用。
算例:由同一点云比较
对立方体内的点云做三维Delaunay剖分生成四面体,取其对偶生成多面体(每点一个单元)。用最小二乘求函数 sin(3x) + cos(2y) + xz 的梯度,比较中部单元误差的中位数:
| 点布置 | 点数 | 四面体单元数 | 四面体梯度误差 | 多面体单元数 | 多面体梯度误差 |
|---|---|---|---|---|---|
| 规则(晶格加扰动) | 2,744 | 18,395 | 3.24% | 2,744 | 4.95% |
| 规则(晶格加扰动) | 15,625 | 106,819 | 2.08% | 15,625 | 2.84% |
| 随机 | 2,461 | 16,081 | 4.02% | — | — |
| 随机 | 16,000 | 106,587 | 2.13% | 16,000 | 4.70% |
单元数相近时比较结果如何?
规则点时,15,625个多面体误差2.84%,18,395个四面体3.24%,多面体略好。但随机点时,16,000个多面体4.70%,16,081个四面体4.02%,结果反转。由随机点生成的多面体形状歪斜,到相邻单元的距离参差不齐。也就是说,并非“多面体一定更好”,而是原始四面体网格质量好时,能用更少单元达到同等以上的精度。多面体的优点据说还包括畸变单元减少带来的更好迭代收敛。
适用场合与步骤
- 复杂几何难以生成六面体时作为候选。
- 先生成质量好的四面体(或表面网格),再转换为多面体。
- 近壁处结合棱柱层,解析边界层。
- 不只看单元数,也要估算面数和内存。
- 在相同条件下比较四面体与多面体结果,确认网格依赖性。
“单元少了,计算时间却一样”
某CFD把1,000万四面体单元转换成200万多面体后,每次迭代的计算时间几乎没缩短。多面体每个单元面多,穿过面的通量计算以及与相邻单元的数据交换都增加了。不过收敛所需迭代次数约减半,总时间缩短了。多面体的效果不能只看“单元数”,要综合看面数、每次迭代时间和收敛所需迭代次数。
常见错误
错误与对策
| 错误 | 后果 | 对策 |
|---|---|---|
| 只按单元数比较 | 误判计算量 | 也比较面数 |
| 由低质量四面体转换 | 形状歪斜的多面体 | 提高原始网格质量 |
| 近壁也只用多面体 | 无法解析边界层 | 结合棱柱层 |
| 认为多面体一定提高精度 | 错误的安心 | 确认网格依赖性 |
| 在不同软件间转换 | 面的方向与形状损坏 | 转换后确认质量 |
我想了解相关内容。