菜鸟式给你讲讲CFL条件是什么以及怎么用
CFL条件,即Courant-Friedrichs-Lewy条件,是用于模拟对流或波动现象的不稳定数值方法稳定性的一个条件。因此,它在计算流体动力学(CFD)中扮演着重要角色。下面的部分将讨论数值上推导出CFL条件的过程,然后在后面部分中,通过一个案例检验其实际设置计算结果。什么是CFL条件?Culbert B. Laney在《Computational Gasdynamics》一书中对CFL条件的定义如下:完整的数值依赖域必须包含物理依赖域(the full numerical domain of dependence must contain the physical domain of dependence)。因此,CFL条件表达了在网格内任何信息在时间步长内传播的距离必须小于网格元素之间的距离。换句话说,给定单元或网格元素的信息必须仅传播到其紧邻的邻居。CFL条件常与线性稳定性条件或非线性稳定性条件混淆。然而,需要强调的是,它不是稳定性的充分条件,通常其他稳定性条件比CFL条件更具限制性。CFL推导我们可以以简单直观的方式推导CFL条件。让我们从考虑一个简单的线性对流问题开始,即量_u_的对流:对于简单的量_u_的线性对流问题,一阶显式迎风格式变为:其中_a_是速度大小,_Δt_是时间步长,_Δx_是网格元素之间的长度。通过对这个格式进行泰勒级数展开,这个格式引入了所谓的数值扩散,或数值粘度,等于: 正如从扩散系数预期的那样,数值扩散系数必须是正的,否则,解决方案将随时间无限增长,使数值方案不稳定。上述表达式中的右括号内的项通常被称为库朗特数,它是一个无量纲量。因此,库朗特数可以表述如下:根据数值扩散系数的讨论,对于任何显式的简单线性对流问题,库朗特数必须小于或等于1,否则,数值粘度将是负的:1928年,库朗特、弗里德里希斯和莱维在一篇文章中首次引入了这个条件。这个推导被认为是对CFD技术发展最有影响力的作品之一。CFL条件的其他类型问题这种讨论可能只对显式方案成立。同样重要的是,简要讨论在更现实的问题中发生的情况。首先,隐式的线性对流是无条件稳定的,也没有CFL条件。这是因为隐式方案使用整个域来计算每个时间步长。然而,每个时间步长隐式计算(即,求解隐式线性系统)可能非常昂贵。此外,随着时间步长的增加,时间精度会降低。因此,使用带有较低时间步长的显式方案是合理的。对于更复杂和有代表性的问题,包括非线性流动,CFL条件作为设置时间步长的参考。此外,当处理非线性现象时,即使选择了较大的库朗特数,隐式形式也可能存在稳定性问题。因此,在这些情况下,可能需要对线性化公式进行局部稳定性分析。尽管如此,CFL条件对于非线性问题仍然是必要的。 常见CFL使用让我们从一个模拟实例的问题开始。实例采用水渠流动的案例,它由一个带有入口和出口的矩形盒子组成。入口规定一个速度入口边界条件,出口将由规定的压力边界条件组成。 当选择0.001秒的时间步长,入口速度为5m/s。收敛图如下所示: 通过检查图表,可以清楚地看到,最终问题的最大库朗特值超过了1。通过将时间步长增加到仅0.004秒,库朗特数上升到2.0以上,导致求解器发散并显示错误。然后模拟被中断: 解决CFL收敛问题有几种方法可以解决这种收敛问题。回想库朗特数:为了降低这个值,可以:- 降低时间步长,或- 制作更粗糙的网格。第二个选项对某些人来说有时是违反直觉的,因为它似乎不合理,更粗糙的网格可以帮助收敛。然而,很容易理解,更细的网格有助于准确性。这激励工程师创建更细的网格,但忘记了降低时间步长值。关于第一个选项,正确的时间步长值并不总是显而易见的。问题可能在模拟过程中发生复杂现象。这要求工程师为模拟设置一个低时间步长,即使这些复杂现象只在一小部分模拟时间内发生。 一般CFD求解器允许使用可调整时间步长。此选项默认激活,并有两个参数:- 最大库朗特数- 最大时间步长将最大库朗特数设置为一个安全值,例如0.5,看看模拟会发生什么:求解器能够将最大库朗特数保持在0.5左右,这足以使模拟很好地收敛。来源:CFD饭圈