分离流求解器

分离流求解器可按顺序求解质量和动量的积分守恒方程。对于如 u,v,w,p 等求解变量,将以迭代方式逐个求解非线性控制方程。

分离求解器使用压力-速度耦合算法,其中将通过求解压力校正方程满足对速度场的质量守恒约束。压力校正方程基于连续性方程和动量方程而构建,以便通过校正压力寻找满足连续性方程的预测速度场。此方法也称为预估校正法。可通过压力校正方程获得作为变量的压力。

Simcenter STAR-CCM+ 可实现以下压力-速度耦合算法:
  • SIMPLE
  • SIMPLEC
  • PISO

该分离求解器在恒密度流中有自己的根。虽然它可以处理轻微可压缩流和低瑞利数自然对流,但不适用于激波捕捉、高马赫数和高瑞利数应用。

在很大程度上,提供的方法基于 [213]、[225]、[226]、[258]、[259] 和 [267]。

动量方程的离散化

如通用传输方程中所述,通过设置 ϕ = u , v , w ,动量方程能够以类似方式离散化为标量传输方程:
∂ ∂ t ⁡ ( ρ v V ) 0 + ∑ f   [ ρ v v ⋅ a ] f = - ∑ f   ( p ⁢   I ⋅ a ) f + ∑ f   T ⋅ a
(888)

如对流通量和扩散通量中所述,将离散化对流和扩散通量。需要特别注意压力梯度的离散化。

面压力计算

在动量方程中,压力显示为压力梯度。要使有限体积方案具有二阶精度,通量计算中使用的梯度至少需要具有线性精确性,能够精确再现(达到机器精度)恒定梯度场。

求解器中使用了以下两种类型的压力梯度:
  • 面压力重构的最小二乘梯度
  • 用于计算动量方程中压力的格林-高斯梯度
将体积力纳入这些梯度的数值计算中。具体而言,不计算实际压力梯度,而是计算虚拟压力场 p ′ 的梯度,该梯度满足 ∇ p ′ = ∇ p − b ,其中 b 表示体积力矢量。实际的压力梯度是通过在梯度计算后将体积力重新加回来得到的。

体积力以及压力梯度在空间中会发生不连续的变化,例如在自由表面或多孔与无孔区域的交界面处。在此情况下,为了减少压力梯度的超调,计算会考虑面两侧压力梯度的不同斜率。为了减少这种情况下的压力梯度过冲,计算时会考虑压力梯度在面两侧的不同斜率。该方案对于分段恒定体积力场来说是严格精确的,也就是说,即使体积力和压力梯度在局部存在不连续性,该方案仍然能够准确处理。

在所有流体中,体积力并未通过相应压力梯度来平衡。例如,体积力可能会导致流场的惯性加速度,而压力场保持均匀不变。在这种情况下,在压力梯度计算中隐式假设力平衡可能会导致不利影响。为此,引入了一种度量方法,用于动态测量局部动量力平衡的质量。该度量方法用于在上述体积力感知面压力和压力梯度方案之间自动切换,或者在其他情况下切换到默认方案。

压力校正方程

通过根据质量通量校正 m ˙ ′ f 重新编写连续性方程,可获得压力-速度耦合:

∑ f   m ˙ f = ∑ f   ( m ˙ f * + m ˙ ′ f ) = 0
(889)

对离散动量方程求解之后,将计算未校正的面质量通量 m ˙ f * 。动量方程使用假定的压力场 p * 进行求解,这不满足连续性。需要校正质量流量 m ˙ ′ f 以满足连续性。

内部面上未校正的质量通量可根据网格单元变量写为:

m ˙ f * = ρ f a ⋅ ( v 0 * + v 1 * 2 ) - ϒ f
(890)

其中, v 0 * 和 v 1 * 是已对离散动量方程求解之后的网格单元速度。网格单元中心到面的速度线性插值会导致出现压力的非物理棋盘格化。为了防止出现此棋盘格化,将引入 Rhie-Chow 耗散 ϒ f :

ϒ f = Q f ( p 1 - p 0 - ∇ p f * ¯ ⋅ d s )
(891)

其中:

Q f = ρ f ( V 0 + V 1 a ¯ 0 + a ¯ 1 )   α ⁢   ⋅   a
(892)
其中:
V 0 , V 1 网格单元 0 和网格单元 1 的网格单元体积
a ¯ 0 , a ¯ 1 网格单元 0 和网格单元 1 的所有动量分量的动量系数平均值
p 0 网格单元 0 的压力
p 1 网格单元 1 的压力
∇ p f * ¯ 压力的网格单元梯度的体积加权平均值,它使用两个网格单元梯度值之间基于体积的插值计算得出

在多相流中,由于相间相互作用的存在,动量系数形成了矩阵。但是,仅考虑矩阵的对角项。这些值用 Eqn. (892) 中的 a ¯ 0 和 a ¯ 1 表示。

Rhie-Chow
Rhie-Chow 动量插值方法忽略 Eqn. (892) 中的非对角项,这些项表示相互作用力在不同相之间的相互作用。如果预期没有强大的相间耦合,这就已经足够。
相耦合
相耦合动量插值法 ([471]) 是多相流 Rhie-Chow 插值法的扩展。此方法通过求解用于耗散系数计算的完整矩阵形式 a 来考虑交界面力,其计算方法为:
Q f = ρ f | V × ( a − 1 ¯ ⋅ α ¯ )   | a v g ⁢   ⋅   a
(893)

其中, α ¯ 是体积分数(包括每个相的体积分数)的矢量。此方法改进了当离散相具有极小长度尺度时的收敛行为。

非稳态耗散校正

对于系数 a ¯ ⁢   = a ¯ 0 ⁢   or ⁢     a ¯ 1 ,启用非稳态耗散校正时,将基于声学 CFL 修改系数 a ¯ 。

  • 使声学 CFL 为 C F L a = c Δ t Δ x ,其中 c 为声速, Δ t 为模拟时间步, Δ x 为局部网格尺寸。
  • 使 limCFL 为用户指定的限制声学 CFL 值。

然后:

  • 如果 CFL > limCFL ,则使用 a ¯ 而不进行修改。
  • 否则, a ¯ 将替换为 a ¯   ′ ,如下所示:

    a ¯   ′ ⁢ =   a ¯ u ⁢   ( 1 + CFL r a ¯ u n s max ( a ¯ u ⁢   ,   1 ⁢   × 10 − 20 ) )

    其中:

    • a ¯ u = a ¯ −   a ¯ u n s 和
 a ¯ u n s ⁢ =   3 2 ρ ⁢ Vol Δ t
    • CFL r = min ( 1.0 , CFL limCFL )

p L 和 p R 为面法向上相对于面形心的压力值,在两个对称点 ( x L , x R ) 处进行线性重构计算得出。

x L = x f - d s n 和 x R = x f + d s n

其中:

  • n 是与面积矢量 a f 关联的单位矢量。
  • x f 是面形心的位置矢量。
  • d s 是标量距离,其中:
    • 如果 max ( V 1 V 0 , V 0 V 1 ) > 10 ,则 d s = 0.5 | α | 。
    • 否则, d s = min ( d s 0 , d s 1 ) ,其中:

      • d s 0 = d x 0 ⋅ n ( d x 0 = x f - x 0 投影至面网格面积法向)
      • d s 1 = d x 1 ⋅ n ( d x 1 = x f - x 1 投影至面网格面积法向)。
密度校正

对于可压缩流,将引入密度校正 : ρ′

m ˙ f = ( ρ + ρ′ ) f ( v f n * + v ' f n ) | a | = ( ρ f v f n * + ρ′ f v f n * + ρ f v′ f n + ρ' f v′ f n ) | a |
(894)

其中,下标 "fn" 表示面法向分量。

ρ f v ' f n | a | ≡ - Q f ( p ′ 1 - p ′ 0 )
(895)

其中的 p ′ 1 和 p ′ 0 是网格单元压力校正,且:

ρ′ f v f n * | a | = m ˙ f * ρ f ( ∂ ρ ∂ p ) T p′ upwind
(896)

其中:

p′ upwind = { p ′ 0     for  m ˙ f * > 0 p ′ 1     for  m ˙ f * < 0
(897)

由于可以选择忽略二阶项 ρ' f v f n ' ,因此可以合并这些方程,将质量流量校正定义为:

m ˙ ′ f = Q f ( p ′ 0 - p ′ 1 ) + m ˙ f * ρ f ( ∂ ρ ∂ p ) T p′ upwind
(898)
离散压力校正方程

离散压力校正方程通过 Eqn. (889) 和 Eqn. (898) 得出,并以系数形式写为:

p ′ p + ∑ n   a n p ′ n = r
(899)

残差 r 为进入网格单元的净质量流量:

r = - ∑ n   m ˙ f *
(900)

SIMPLE 算法

SIMPLE 算法用于控制总体求解。此算法汇总如下:

  1. 设置边界条件。
  2. 计算速度和压力的重构梯度。
  3. 计算速度和压力梯度。
  4. 求解离散动量方程。这可用于创建中间速度场 v * 。
  5. 计算面 m ˙ f * 处的未校正质量通量。
  6. 求解压力校正方程。这可以为压力校正 p′ 生成网格单元值。
  7. 更新压力场:
    p n + 1 = p n + ω p '
    (901)

    其中, ω 为压力的亚松弛因子。

  8. 更新边界压力校正 p ′ b 。
  9. 校正面质量通量:
    m ˙ f       n + 1 = m ˙ f * + m ˙ ′ f
    (902)
  10. 校正网格单元速度:
    v p n + 1 = v p * - V ∇ p′ a p v
    (903)

    其中, ∇ p ' 为压力校正的梯度, a   p v 为离散速度方程的中央系数矢量, V 为网格单元体积。

  11. 压力变化时更新密度。
  12. 释放所有临时储存。

SIMPLE Consistent (SIMPLEC) 算法

SIMPLEC 遵循的步骤与为 SIMPLE 算法概括的步骤相同。它的不同之处体现在压力校正方程 p ′ 的形式。在 SIMPLE 中,网格单元的速度校正方程根据压力校正写入,忽略邻近网格单元的速度校正。获取此方程的发散,并利用连续性,得出 p ′ 方程。

在速度校正方程中,SIMPLEC 假设相邻网格单元中的速度校正等于中心网格单元处的速度校正。这会导致 的方程不同。 p ′

另一差异是,与时间步长和速度亚松弛相关的压力亚松弛隐式内置在 方程中,因此没有 Eqn. (901) 中那种显式压力亚松弛。 p ′

在 SIMPLEC 中,Eqn. (903) 变成:

v p n + 1 = v p * − V ∇ p ′ a p v + ∑ n a n v
(904)

其中 为速度相邻系数。 a n v

PISO 算法

PISO 算法适用于对流库朗数较少的瞬态情况。

PISO 与 SIMPLE 对比:

  • 尽管这两种算法具有相同的时间精度级别,但采用短时间步时 PISO 比 SIMPLE 速度更快。[244]
  • PISO 不适用于长时间步的情况,在该情况下,组合 CFL 会高至远超过 10,而 SIMPLE 仍旧保持稳定。
  • 随着时间步长增加,SIMPLE 将失去瞬态求解的时间精度。但是,SIMPLE 仍可以通过使用较大的时间步长,获得精确的稳态求解(如果存在)。

因此,在可以使用大时间步长的情况中使用 SIMPLE,例如在获取稳态求解时,而对于要求使用小时间步长且时间精度要求较高的问题,则使用 PISO。

PISO 算法与 SIMPLE 算法具有许多相同的特点。该算法汇总如下:

  1. 设置边界条件。
  2. 计算速度和压力的重构梯度。
  3. 计算速度和压力梯度。
  4. 求解离散动量方程。此操作会创建中间速度场 v * 。
  5. 计算面 m ˙ f * 处的未校正质量通量。
  6. 构建压力校正方程,然后测试 PISO 算法是否收敛。如果 PISO 已收敛,则将最后一次迭代标志设为“真”。
  7. 求解压力校正方程。此操作会得到压力校正 p ′ 的网格单元值。
  8. 更新压力场:
    p n + 1 = p n + ω p ′
    (905)

    其中, ω 为压力的亚松弛因子。如果此迭代是最后一个,则 ω 等于 1。

  9. 更新边界压力校正 p ′ b 。
  10. 校正面质量通量:
    m ˙ f n + 1 = m ˙ f * + m ˙ ′ f
    (906)
  11. 校正网格单元速度:
    v p n + 1 = v p * − V ω ∇ p ′ a p v
    (907)

    其中, ∇ p ′ 为压力校正的梯度, a p v 为表示速度方程的离散线性系统的中央系数矢量, V 为网格单元体积。

  12. 压力变化时更新密度。
  13. 求解任何耦合 PISO 的方程,例如针对组分或能量。
  14. 从状态方程重新计算密度(最后一个修正器除外)。
  15. 如果此迭代是最后一个,则转到第 18 步。
  16. 使用相邻网格单元导致的校正显式更新动量方程。
  17. 转到第 5 步,然后继续操作,直到达到收敛。
  18. 释放所有临时储存。

PISO 一致性 (PISOC) 算法

PISOC 算法的步骤与 PISO 算法相同。PISOC 与 PISO 的不同之处在于压力校正 p ′ 的方程形式,它采用了与 SIMPLEC 相同的公式。

对于 SIMPLEC,与时间步长相关的压力亚松弛隐式地内置于 p ′ 方程中,因此没有 Eqn. (901) 中那种显式压力亚松弛。

对于 PISOC,速度更新方程 Eqn. (903) 将替换为用于 SIMPLEC 的 Eqn. (904)。