库朗数(CFL数)是计算流体动力学(CFD)中的核心概念,旨在确立稳定性条件并保障信息在计算域内的正确传播。本文深入阐释库朗数的物理含义、CFL条件的推导过程及其在CFD仿真中的实际影响。内容涵盖库朗数的计算方法、其对数值稳定性的作用机制,以及违反CFL条件时解决收敛问题的策略。此外,文章还探讨了该参数在ANSYS Fluent和OpenFOAM等主流CFD求解器中的应用,以及在HEC-RAS模型中的具体作用,最后总结了优化仿真设置的关键实践建议。
库朗数(Courant number),亦称CFL数(Courant-Friedrichs-Lewy number),是数值仿真中至关重要的无量纲参数,广泛应用于计算流体力学(CFD)及其他时间相关问题的研究。该参数决定了数值格式的稳定性,尤其对显式时间推进方法而言。在一维情形下,其数学表达式如下:
式中:
库朗数的物理意义直观明了:在时间步长 内,流体微团移动的距离为 (见图1)。该数值即为上述移动距离与单元特征长度的比值,亦即单个时间步内跨越的单元比例。因此,库朗数是一个无量纲量。
在数值仿真中,显式与隐式方法是求解常微分方程(ODE)和偏微分方程(PDE)的常用手段。当解析解难以获取时,这些数值方法可提供近似解。具体选择取决于问题特性、精度要求及计算资源,并会显著影响求解过程的稳定性、准确性与效率。因此,深入理解两者的权衡关系,对于为特定仿真任务选定合适方法至关重要。
在显式方法中,当前时间步的解由前一时刻的已知值直接计算得出。该方法通过直接求解控制方程,避免了大型方程组的求解过程。针对含时偏微分方程(PDE),显式方法可表述为:
式中:
在隐式方法中,给定时间步的解依赖于当前及未来时间步的值。这要求在每个时间步求解线性或非线性方程组,从而增加了计算量。对于时间相关的偏微分方程(PDE),隐式方法可表示为:
式中:
显式和隐式方法的比较如下表所示。
探讨收敛要求时,从数值计算角度可将时间离散化方法分为显式、隐式和半隐式三类。为确保仿真收敛,通常建议将库朗数维持在1左右,这一准则被称为CFL条件,在采用显式方法时尤为关键。然而,严格遵守CFL条件往往导致CFD仿真耗时增加且计算成本高昂。
半隐式和隐式方法能够放宽严格的CFL限制,允许使用更大的时间步长及大于1的库朗数。但在隐式方法中,库朗数不宜过大,以免引发结果失真。鉴于库朗数受网格尺寸和时间步长共同影响,网格质量至关重要。例如,若存在极小单元或高长宽比单元,在使用大时间步时可能会加剧误差甚至导致计算发散。
如前所述,库朗数要求时间步长内信息在网格中的传播距离须小于网格单元间距。换言之,源自特定网格单元的物理量(如温度、压力、速度等)需在有限时间内仅传递至直接相邻单元,以维持数值稳定性。
下图描述了数值仿真中的库朗数(Co)条件,通过对比Co = 0.3与Co = 1.1两种情形,展示了时间步长( )和网格尺寸( )的选择对数值稳定性的影响。
图中展示了两种情形:
在二维情形下,CFL条件演变为:
通过类比可知,在一般 维情形下,CFL条件为:
Cmax 的取值取决于所采用的数值方法:
一维单元的库朗数及其物理意义易于理解。然而CFD仿真软件(如 OpenFOAM、ANSYS Fluent 等)支持多种单元形状,包括六面体、楔形、棱柱、棱锥、四面体、四面体楔形及多面体。此外,这些单元往往并非完美几何形态。由此引发了如何计算存在轻微几何缺陷的任意单元库朗数的问题。
准确确定库朗数的关键在于计算任意3D单元的 (图5)。针对单元的不规则形状,需借助体积和表面积等几何属性对 进行近似。
对于不规则3D单元,空间步长Δx无法直接确定。通常采用以下公式进行计算:
该公式建立了单元体积( )与表面积( )之间的联系,从而提供了对单元平均距离的估算。总表面积等于封闭体积各面面积之和(图6)。
为确定库朗数,需获取垂直于单元各面的速度分量(见图7)。该值可通过计算面速度矢量 与指向单元质心的单位法向矢量 的点积得到,即 。
关键在于,若直接对垂直于各面的速度分量求和,依据连续性方程,其结果必然为零,因为进入与离开控制单元的净质量流量相互抵消。为此,计算中不再直接累加法向速度分量,而是对各面的 模长进行求和。这一处理等效于反转了一半的通量方向,从而确保总和不为零。为还原真实通量,需取该总和的一半。经此调整,库朗数的最终表达式如下:
式中,
此处考虑1/2,由于引入了模||,需将一半通量的方向反转。
网格中各单元的库朗数存在差异,因此可将其作为场变量进行可视化绘制。图8展示了计算域内的库朗数空间分布。库朗数作为无量纲参数,用于控制流体动力学仿真中显式数值格式的稳定性。高库朗数区域(红色/橙色)对应较高的流体速度、较小的网格单元或两者兼具的情形;低库朗数区域(蓝色)则对应较低的速度或较粗的网格分辨率。库朗数由局部流速、时间步长及网格间距计算得出。为确保数值稳定性,显式求解器通常要求库朗数保持在1以下。该可视化结果有助于识别需调整网格或时间步以维持仿真稳定性的区域。此外,CFD求解器依据最大库朗数设定时间步长。
在 Fluent 中,可通过绘制云图来显示库朗数。具体操作步骤如下:
在ANSYS Fluent的Contours面板中设置上述单元对流库朗数后,即可可视化计算域上该参数的分布情况。这一可视化手段有助于识别库朗数可能超出稳定性限制的区域,从而指导时间步长、网格分辨率或求解器设置的调整,以确保仿真的数值稳定性和准确性。
进入 Solution > Controls 以打开设置面板。
依据仿真的稳定性与准确性要求调整库朗数:
必要时细化时间步——若仿真出现不稳定现象,可减小库朗数或调整时间步长。时间步长的计算公式如下:
式中, 为当前库朗数, 为最大允许库朗数。
运行测试仿真–监控残差并确保数值稳定性,然后再进行大规模仿真(图15)。
什么是库朗数?
库朗数(CFL数)是计算流体力学(CFD)中的无量纲参数,通过衡量信息在一个时间步长内相对于网格尺寸的传播距离,来保障数值计算的稳定性。
库朗数和CFL数之间有区别吗?
两者并无实质区别。“库朗-弗雷德里-希列维数”(CFL)与“库朗数”指代同一概念,仅因不同软件包的习惯而采用不同的称呼。
如何在OpenFOAM中设置库朗数?
在OpenFOAM中,库朗数可以通过 controlDict 文件中的 maxCo 参数进行控制。用户可设定允许的最大库朗数,求解器将自动调整时间步长以满足该限制。
库朗数如何影响CFD仿真中的收敛性?
过高的库朗数易引发数值不稳定甚至发散,尤其在显式格式中更为显著。将库朗数维持在推荐范围内,有助于确保仿真的稳定收敛及结果的准确性。
稳态仿真中库朗数的推荐值是什么?
在稳态仿真中,若使用耦合求解器以加速收敛,可采用较高的库朗数(默认值为200)。但若追求更高的计算精度,建议将库朗数控制在1以下。
如何在ANSYS Fluent中可视化库朗数场?
在 Fluent中,进入Contours面板,选择Cell Convective Courant Number,经计算后即可生成显示计算域内库朗数分布的可视化云图。
(完)