吾生有涯 学海无涯
析模有界 知识无界

CFD应用科普|库朗数

库朗数(CFL数)是计算流体动力学(CFD)中的核心概念,旨在确立稳定性条件并保障信息在计算域内的正确传播。本文深入阐释库朗数的物理含义、CFL条件的推导过程及其在CFD仿真中的实际影响。内容涵盖库朗数的计算方法、其对数值稳定性的作用机制,以及违反CFL条件时解决收敛问题的策略。此外,文章还探讨了该参数在ANSYS FluentOpenFOAM等主流CFD求解器中的应用,以及在HEC-RAS模型中的具体作用,最后总结了优化仿真设置的关键实践建议。

1 什么是库朗数?

库朗数(Courant number),亦称CFL数(Courant-Friedrichs-Lewy number),是数值仿真中至关重要的无量纲参数,广泛应用于计算流体力学(CFD)及其他时间相关问题的研究。该参数决定了数值格式的稳定性,尤其对显式时间推进方法而言。在一维情形下,其数学表达式如下:

式中:

  •  = 库朗数
  •  = 流体速度或波速
  •  = 时间步长
  •  = 空间网格分辨率

库朗数的物理意义直观明了:在时间步长  内,流体微团移动的距离为 (见图1)。该数值即为上述移动距离与单元特征长度的比值,亦即单个时间步内跨越的单元比例。因此,库朗数是一个无量纲量。

流体距离单元距离

图1 库朗数概念
图1 库朗数概念

2 显式和隐式方法

在数值仿真中,显式与隐式方法是求解常微分方程(ODE)和偏微分方程(PDE)的常用手段。当解析解难以获取时,这些数值方法可提供近似解。具体选择取决于问题特性、精度要求及计算资源,并会显著影响求解过程的稳定性、准确性与效率。因此,深入理解两者的权衡关系,对于为特定仿真任务选定合适方法至关重要。

2.1 显式方法

在显式方法中,当前时间步的解由前一时刻的已知值直接计算得出。该方法通过直接求解控制方程,避免了大型方程组的求解过程。针对含时偏微分方程(PDE),显式方法可表述为:

式中:

  •  = 下一时间步的解
  •  = 当前时间步的解
  •  = 时间步长
  •  = 表示空间导数和源项的函数

2.2 隐式方法

在隐式方法中,给定时间步的解依赖于当前及未来时间步的值。这要求在每个时间步求解线性或非线性方程组,从而增加了计算量。对于时间相关的偏微分方程(PDE),隐式方法可表示为:

式中:

  • = 下一时间步的解(未知需求解)
  • = 当前时间步的解
  • = 时间步长
  • = 下一时间步的空间导数和源项的函数

显式和隐式方法的比较如下表所示。

特性
显式方法
隐式方法
稳定性
受CFL限制(C≤1)
通常无条件稳定
时间步大小
稳定性需要小时间步
允许较大时间步
计算成本
较低(无需求解方程组)
较高(需求解方程组)
实现
更容易实现
实现更复杂
适用性
适用于小时间步问题
适用于刚性问题或大时间步

3 适当的CFL条件

探讨收敛要求时,从数值计算角度可将时间离散化方法分为显式、隐式和半隐式三类。为确保仿真收敛,通常建议将库朗数维持在1左右,这一准则被称为CFL条件,在采用显式方法时尤为关键。然而,严格遵守CFL条件往往导致CFD仿真耗时增加且计算成本高昂。

半隐式和隐式方法能够放宽严格的CFL限制,允许使用更大的时间步长及大于1的库朗数。但在隐式方法中,库朗数不宜过大,以免引发结果失真。鉴于库朗数受网格尺寸和时间步长共同影响,网格质量至关重要。例如,若存在极小单元或高长宽比单元,在使用大时间步时可能会加剧误差甚至导致计算发散。

4 库朗数示例

如前所述,库朗数要求时间步长内信息在网格中的传播距离须小于网格单元间距。换言之,源自特定网格单元的物理量(如温度、压力、速度等)需在有限时间内仅传递至直接相邻单元,以维持数值稳定性。

图2 库朗数等于0.7(蓝色)、1(橙色)和3.5(红色)的可视化表示。保持库朗数低于1。
图2 库朗数等于0.7(蓝色)、1(橙色)和3.5(红色)的可视化表示

下图描述了数值仿真中的库朗数(Co)条件,通过对比Co = 0.3与Co = 1.1两种情形,展示了时间步长()和网格尺寸()的选择对数值稳定性的影响。

图3 库朗数对流动传播的影响
图3 库朗数对流动传播的影响

图中展示了两种情形:

  1. 左图(Co = 0.3):流动在一个时间步内移动的距离为单元尺寸()的30%(),满足显式时间积分方法的稳定性条件,从而确保仿真结果的准确性。
  2. 右图(Co = 1.1):流动在时间步内移动距离超过一个完整单元(110%),违反了显式方法的CFL条件,可能导致数值不稳定、振荡或发散。

5 二维和一般n维情况

在二维情形下,CFL条件演变为:

通过类比可知,在一般  维情形下,CFL条件为:

6 数值方法对Cmax的影响

Cmax 的取值取决于所采用的数值方法:

  • 对于显式(时间推进)求解器,通常需设定 Cmax=1 以确保稳定性。
  • 隐式(基于矩阵)求解器对数值不稳定的敏感度较低,允许采用更大的 Cmax 值。

7 任意3D单元中的库朗数

一维单元的库朗数及其物理意义易于理解。然而CFD仿真软件(如 OpenFOAM、ANSYS Fluent 等)支持多种单元形状,包括六面体、楔形、棱柱、棱锥、四面体、四面体楔形及多面体。此外,这些单元往往并非完美几何形态。由此引发了如何计算存在轻微几何缺陷的任意单元库朗数的问题。

图4 单元类型
图4 单元类型

7.1 任意3D网格的Δx

准确确定库朗数的关键在于计算任意3D单元的 (图5)。针对单元的不规则形状,需借助体积和表面积等几何属性对  进行近似。

图5 确定任意3D单元的特征长度(Δx)
图5 确定任意3D单元的特征长度(Δx)

对于不规则3D单元,空间步长Δx无法直接确定。通常采用以下公式进行计算:

单元体积总表面积或

该公式建立了单元体积()与表面积()之间的联系,从而提供了对单元平均距离的估算。总表面积等于封闭体积各面面积之和(图6)。

图6 任意3D单元的表面积和体积表示
图6 任意3D单元的表面积和体积表示

7.2 任意3D网格的法向速度

为确定库朗数,需获取垂直于单元各面的速度分量(见图7)。该值可通过计算面速度矢量  与指向单元质心的单位法向矢量  的点积得到,即 

图7 垂直于面的速度
图7 垂直于面的速度

关键在于,若直接对垂直于各面的速度分量求和,依据连续性方程,其结果必然为零,因为进入与离开控制单元的净质量流量相互抵消。为此,计算中不再直接累加法向速度分量,而是对各面的  模长进行求和。这一处理等效于反转了一半的通量方向,从而确保总和不为零。为还原真实通量,需取该总和的一半。经此调整,库朗数的最终表达式如下:

式中,

  • : 该面的速度
  • : 单元体积
  • : 面的面积
  • : 面的法向向量
  • :表示沿所有面的求和。

此处考虑1/2,由于引入了模||,需将一半通量的方向反转。

8 库朗数场

网格中各单元的库朗数存在差异,因此可将其作为场变量进行可视化绘制。图8展示了计算域内的库朗数空间分布。库朗数作为无量纲参数,用于控制流体动力学仿真中显式数值格式的稳定性。高库朗数区域(红色/橙色)对应较高的流体速度、较小的网格单元或两者兼具的情形;低库朗数区域(蓝色)则对应较低的速度或较粗的网格分辨率。库朗数由局部流速、时间步长及网格间距计算得出。为确保数值稳定性,显式求解器通常要求库朗数保持在1以下。该可视化结果有助于识别需调整网格或时间步以维持仿真稳定性的区域。此外,CFD求解器依据最大库朗数设定时间步长。

图8 库朗数场
图8 库朗数场

9 值Fluent中计算库朗数

在 Fluent 中,可通过绘制云图来显示库朗数。具体操作步骤如下:

  1. 打开Contours面板。
  2. Contours of下拉菜单中,选择Cell Convective Courant Number
  3. 根据需求配置其他选项,例如FilledNode Value
  4. 点击Save/Display以生成图像。
图9 ANSYS Fluent中库朗数显示
图9 ANSYS Fluent中库朗数显示

在ANSYS Fluent的Contours面板中设置上述单元对流库朗数后,即可可视化计算域上该参数的分布情况。这一可视化手段有助于识别库朗数可能超出稳定性限制的区域,从而指导时间步长、网格分辨率或求解器设置的调整,以确保仿真的数值稳定性和准确性。

图10 单元对流库朗数等值线的示意图

10 稳态和瞬态仿真的库朗数

10.1 稳态仿真的库朗数

  • 对于采用Coupled求解器的稳态仿真,通常使用较高的库朗数(默认值为200)以加速收敛。
  • 若追求计算精度,库朗数应设置为小于1。
  • 若仅需快速实现收敛,则可使用大于1的库朗数。

10.2 瞬态仿真的库朗数

  • 在瞬态仿真中,库朗数通常需小于1以维持数值稳定;推荐值约为25,以确保时间相关仿真的准确性。
  • 针对无显著波动或系统处于稳态等特定情形,库朗数可超过1。但在多数情况下,将其控制在10以下有助于提升稳定性。
  • 采用VOF模型时,设置全局库朗数为25可使VOF追踪仅需1个子时间步,而该值为1时则需4个子时间步。

11 在Fluent中设置库朗数

  1. 进入 Solution > Controls 以打开设置面板。

  2. 依据仿真的稳定性与准确性要求调整库朗数:

    1. 使用显式求解器时,保持库朗数≤ 1以确保稳定。
    2. 使用隐式求解器时,可采用较高数值(如5-50)。
  3. 必要时细化时间步——若仿真出现不稳定现象,可减小库朗数或调整时间步长。时间步长的计算公式如下:

    式中,为当前库朗数,为最大允许库朗数。

  4. 运行测试仿真–监控残差并确保数值稳定性,然后再进行大规模仿真(图15)。

图11 ANSYS Workbench中求解控制的示意图
图11 ANSYS Workbench中求解控制的示意图
图12 显示所选库朗数适当的收敛图
图12 显示所选库朗数适当的收敛图

12 常见问题

  1. 什么是库朗数?

    库朗数(CFL数)是计算流体力学(CFD)中的无量纲参数,通过衡量信息在一个时间步长内相对于网格尺寸的传播距离,来保障数值计算的稳定性。

  2. 库朗数和CFL数之间有区别吗?

    两者并无实质区别。“库朗-弗雷德里-希列维数”(CFL)与“库朗数”指代同一概念,仅因不同软件包的习惯而采用不同的称呼。

  3. 如何在OpenFOAM中设置库朗数?

    在OpenFOAM中,库朗数可以通过 controlDict 文件中的 maxCo 参数进行控制。用户可设定允许的最大库朗数,求解器将自动调整时间步长以满足该限制。

  4. 库朗数如何影响CFD仿真中的收敛性?

    过高的库朗数易引发数值不稳定甚至发散,尤其在显式格式中更为显著。将库朗数维持在推荐范围内,有助于确保仿真的稳定收敛及结果的准确性。

  5. 稳态仿真中库朗数的推荐值是什么?

    在稳态仿真中,若使用耦合求解器以加速收敛,可采用较高的库朗数(默认值为200)。但若追求更高的计算精度,建议将库朗数控制在1以下。

  6. 如何在ANSYS Fluent中可视化库朗数场?

    在 Fluent中,进入Contours面板,选择Cell Convective Courant Number,经计算后即可生成显示计算域内库朗数分布的可视化云图。


(完)

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《CFD应用科普|库朗数》
文章链接:https://www.topcfd.cn/42608/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册