共位格子 (Collocated Mesh) — CAE术语解说

分类:术语集 | 2026-03-28
CAE visualization for collocated mesh - technical simulation diagram

Collocated Mesh 是什么

🧑‍🎓

在CFD教科书中看到"共位格子"和"交错格子",共位格子到底是什么意思呢?


🎓

共位格子(Collocated Mesh)是指将速度 $u, v, w$、压力 $p$、温度 $T$ 等所有物理量都放在单元中心的同一位置的方式。"co-located"="放在同一位置"的意思。


🧑‍🎓

这不是理所当然的吗?把所有东西都放在同一位置好像是最自然的方法啊…


🎓

问得好。从历史角度来看,事实并非如此。在1960~80年代结构化网格CFD的全盛时期,交错格子(Staggered Mesh)才是主流。在交错格子中,速度分量放在单元面的位置,而压力放在单元中心。通过故意错开变量的位置,可以获得数值上稳定的压力场。


与交错格子的比较

🧑‍🎓

那么交错格子比较优越吗?为什么现在共位格子成为了主流呢?


🎓

交错格子确实可以自然地抑制压力振荡,在结构化网格中非常稳定。但有一个很大的弱点:很难应用到非结构化网格(三角形、多面体等)上。想象一下汽车车身或涡轮机叶片这样的复杂形状需要网格化,非结构化网格是必不可少的吧?这时候就轮到共位格子上场了。


🧑‍🎓

明白了。两者大致上有什么区别呢?


🎓

是这样的:

项目共位格子交错格子
变量配置所有变量都在单元中心速度在单元面,压力在单元中心
非结构化网格容易适用难以适用
压力振荡需要Rhie-Chow插值自然被抑制
数据结构简单(一种存储点)复杂(各速度分量有不同的存储点)
主要采用求解器OpenFOAM, Fluent, STAR-CCM+传统结构化网格代码

现在的主要CFD求解器几乎全部采用共位格子。内存管理也更简洁,代码维护性也更高。


棋盘式压力问题

🧑‍🎓

前面提到"压力振荡",共位格子为什么会产生压力振荡呢?


🎓

这就是著名的棋盘式压力问题(Checkerboard Pressure Problem)。用一维来思考。用中心差分对运动量方程中的压力梯度项进行离散化,单元 $i$ 的压力梯度可表示为

$$\left(\frac{\partial p}{\partial x}\right)_i \approx \frac{p_{i+1} - p_{i-1}}{2\Delta x}$$

这里要注意的是,单元 $i$ 的压力 $p_i$ 本身根本没有出现在这个式子里。奇数编号的单元和偶数编号的单元可以独立地拥有各自的压力场。


🧑‍🎓

啊,也就是说只看间隔开的单元的压力,所以即使压力像棋盘一样交替变化也检测不到?


🎓

完全正确!例如,如果有一个压力分布 $p = [100, 0, 100, 0, 100, \ldots]$,中心差分会认为梯度为零。即使使用连续性方程进行压力修正,也无法消除这种振荡模式。结果压力场就会变成物理上不可能存在的棋盘式分布。这就叫"棋盘式"问题。


🧑‍🎓

那交错格子为什么不会出现这个问题呢?


🎓

在交错格子中,速度被放在单元面上。面 $i+1/2$ 处速度对应的压力梯度为

$$\left(\frac{\partial p}{\partial x}\right)_{i+1/2} \approx \frac{p_{i+1} - p_i}{\Delta x}$$

这样就直接参考了相邻单元的压力。因此,不允许像棋盘一样间隔出现的压力分布。这就是交错格子之前稳定的原因。


Rhie-Chow插值

🧑‍🎓

那共位格子是怎样克服棋盘式问题的呢?


🎓

1983年Rhie和Chow提出的Rhie-Chow插值(Rhie-Chow Interpolation)就是解决方案。这种方法与SIMPLE族压力修正算法配合使用。基本思想是这样的:

计算单元面的质量流量时,不是简单地对单元中心速度进行线性插值,而是加入基于压力梯度的修正项。具体来说,单元面 $f$ 处的速度计算为

$$u_f = \overline{u}_f - \overline{d}_f \left[ \left(\frac{\partial p}{\partial x}\right)_f - \overline{\left(\frac{\partial p}{\partial x}\right)}_f \right]$$

其中 $\overline{u}_f$ 是单元中心速度的线性插值,$\overline{d}_f$ 是来自运动量方程系数的插值系数,括号内的第二项是"面处的压力梯度"与"单元中心压力梯度的插值值"的差。


🧑‍🎓

嗯,看这个式子有点不太直观…。简单说就是在做什么呢?


🎓

粗略地说,是在共位格子上伪造出"如果是交错格子应该得到的压力梯度"。面处的压力梯度 $(\partial p/\partial x)_f$ 是用相邻单元的 $p$ 的差分计算的,所以直接看到 $p_i$ 和 $p_{i+1}$。而把单元中心的梯度插值到面上得到的 $\overline{(\partial p/\partial x)}_f$ 只包含间隔开的信息。取两者的差,就对棋盘式模式产生了阻尼(衰减)效果。


🧑‍🎓

明白了,是加入人工耗散一样的东西。但这样的话精度不会下降吗?


🎓

问得敏锐。Rhie-Chow插值的修正项依赖于网格宽度 $\Delta x$,所以当网格细化时,修正量会变小,对精度的影响也就消失了。也就是说保证了网格收敛性。只不过,在非定常计算中已知存在时间步长依赖性,当 $\Delta t \to 0$ 时会出现过度阻尼问题。Choi(1999)和Yu等人的改进版本都对此进行了修正,但在实务中用默认设置一般不会产生大问题。


实务中的注意事项

🧑‍🎓

在实务中使用共位格子时要注意什么呢?


🎓

有几个要点:


🧑‍🎓

OpenFOAM和Fluent都是共位格子吧?日常使用中不会出现"选择网格类型"这样的设置吧?


🎓

对的,现在的主要求解器都以共位格子为前提,用户一般不会遇到"选择共位还是交错"的场景。Rhie-Chow插值也是由求解器内部自动应用的。但关键是,当解出现压力振荡倾向时,能否意识到"这可能是棋盘式问题"。这样才能成为改进网格质量或重新审视离散化方案的契机。


🧑‍🎓

总结一下,共位格子因为能用非结构化网格而成为现代CFD标准,但需要用Rhie-Chow插值来处理棋盘式问题,对吧?


🎓

总结得完美!要记住的是,网格配置方式与离散化精度和稳定性直接相关。理解"为什么采用这种网格配置"、"内部进行了什么人工处理",对于提高结果的解释质量和排查故障的能力有巨大帮助。


定义

共位格子(Collocated Mesh / Co-located Grid)是指在有限体积法中,将速度、压力、标量量等所有解变量存储在单元中心(Cell Center)同一节点的网格配置方法。

与之相对,交错格子(Staggered Mesh)将速度分量放在单元面(Cell Face),压力放在单元中心,这源自Harlow & Welch(1965)的MAC方法。

共位格子的优点与课题

优点:

课题:

Rhie-Chow插值的数式表达

单元面 $f$ 处的质量流量速度由下式给出:

$$u_f = \overline{u}_f - \overline{d}_f \left[ \left(\nabla p\right)_f - \overline{\left(\nabla p\right)}_f \right]$$

其中 $\overline{(\cdot)}_f$ 是单元中心值到面的线性插值,$d = V / a_P$($V$:单元体积,$a_P$:运动量方程对角系数)。第二项作为对棋盘式模式的衰减项发挥作用。

相关术语

对CAE术语的准确理解是团队内沟通的基础。— Project NovaSolver也致力于支持实务者的学习。

请告诉我们在实务中使用共位格子遇到的课题

Project NovaSolver致力于解决CAE工程师日常面临的课题——设置的复杂性、计算成本、结果解释等问题。您的实务经验将成为开发更好工具的动力。

联系方式(准备中)
这篇文章的评价
感谢回答!
有帮助
希望
更详细
报告
错误
有帮助
0
希望更详细
0
报告错误
0
由NovaSolver贡献者撰写
Anonymous Engineers & AI — 网站地图
查看个人资料