Ur Courant Number:相对库朗数的含义与公式
Ur Courant Number:含义、公式与意义
你提供的代码片段展示了 OpenFOAM 中用于计算 “Ur Courant number” 的方式。下面从概念、公式推导到物理/数值意义做系统整理。
Ur 的含义
- Ur 在这里可以理解为:由两相(或两速度场)通量差异引入的“相对(relative)”或“更新(update)”驱动的有效 Courant 数。
- 与常规 Courant 数(由单一对流通量
phi决定)不同,Ur Courant number 用的是两股通量之差phi1 - phi2,用来度量在一个时间步内,由两者差异引起的穿越单元尺度的有效“推进幅度”。
直观理解:如果 phi1 与 phi2 代表两相或两组分的界面/相对流动,Ur Co 衡量的是它们的相对输运强度对时间步长稳定性的约束。
代码对应的数学表达
代码核心:
1 | scalar UrCoNum = 0.5*gMax |
逐项解释:
mag(phi1 - phi2):面通量的幅值(两通量的差)。单位通常为 [量/时间],例如体积通量为 [m^3/s]。fvc::surfaceSum(...):将面量对每个单元进行面求和,得到每个单元的总“相对通量”规模。/ mesh.V().field():除以单元体积,得到每单元的“相对通量/体积”,类似于一个特征频率或速率 [1/s]。* runTime.deltaTValue():乘以时间步长 Δt,得到无量纲数。gMax(...):对全场(全部单元)取最大值。0.5*:经验或理论稳定性系数(相当于更保守地估计稳定时间步,减半)。
将其写成对每个单元 c 的中间量:
$$\tilde{U}r(c) = \frac{\displaystyle \sum{f\in \partial c} \left|(\phi_1 - \phi_2)f\right|}{V_c}$$
然后全局取最大值并乘以 Δt 与 1/2:
$$\mathrm{UrCoNum} = \frac{1}{2},\max{c}\left(\tilde{U}_r(c)\right),\Delta t$$
因此,完整公式可表述为:
$$\boxed{
\mathrm{UrCoNum}
\frac{1}{2},\Delta t;\max_{c}
\left(
\frac{\displaystyle \sum_{f\in \partial c} \big|(\phi_1 - \phi_2)_f\big|}{V_c}
\right)
}$$
并在输出时:
1 | Info<< "Max Ur Courant Number = " << UrCoNum << endl; |
将其与已有的 CoNum 做上确界,表明整体时间步稳定性要同时受普通 Co 数与 Ur Co 数的约束。
与标准 Courant 数的对比
- 标准 Courant 数(对单一通量
phi):
$$\mathrm{Co} =
\Delta t;\max_{c}\left(
\frac{\displaystyle \sum_{f\in \partial c} \left|\phi_f\right|}{V_c}
\right)$$ - Ur Courant 数:
$$\mathrm{UrCo} =
\frac{1}{2},\Delta t;\max_{c}\left(
\frac{\displaystyle \sum_{f\in \partial c} \left|(\phi_1 - \phi_2)_f\right|}{V_c}
\right)$$
二者形式类似,但 Ur 使用的是通量之差,并带有 0.5 系数,体现了不同的数值稳定性约束来源。
意义与作用
- 数值稳定性约束:UrCoNum 以相对通量为基准,给出时间步长应满足的 CFL 类型限制。若 UrCoNum 过大,意味着两通量差导致的场量更新在单步内“跨越”过多单元尺度,可能引发不稳定或振荡。
- 自适应时间步控制:通常会据此调小 Δt,使得
UrCoNum ≤ UrCoMax(经验上与常规CoMax同量级,典型 < 1,常见更保守)。 - 多相/多场相对输运:在两相流、组分迁移、或多速度群模型里,通量差反映相间相对运动。UrCo 限制可防止界面/相对输运在数值上“超前”。
- 保守性因子 0.5:半系数可视作额外的安全裕度,具体来源可能与离散格式、分裂策略或理论推导的保守界有关。
小结
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
