0.写在前面
最近想写一篇时间隐式和时间显示格式的问题,看Fluent Theory Guide的时候,发现一个有意思的细节:关于空间处理,手册写的是 Spatial Discretization;这很好理解,也符合我们的认知,将空间划分成多个网格进行离散化。
但是对于时间格式,理论手册虽然大标题写的是"Temporal Discretization",但下面的小节却全是"Time Integration"(时间积分)
为什么同样是数值处理,一个叫“离散”,一个叫“积分”?
1.有限体积法的基本思想
要理解这个区别,我们首先要回到CFD的起点-有限体积法。
传统的思维方式是从微分方程出发,用差商代替导数。但有限体积法走了一条不同的路:它直接从积分形式的守恒定律出发
核心思想:将计算区域划分为一系列不重复的控制体积,在每个控制体积上对守恒型微分方程进行积分。三维对流扩散方程的守恒型微分方程可以写成
但有限体积法真正处理的是它的积分形式。将上式在时间步长 Δt内对控制体积CV积分
这个方程看起来很复杂,但它的物理意义非常清晰 :
左边第一项:控制体内物理量的时间变化率左边第二项:通过控制体表面的对流流量右边第一项:通过控制体表面的扩散流量右边第二项:控制体内的源项
将计算域划分为 N 个互不重叠的控制体(cell),对每个 cell 分别写出上述方程, 就得到了 N 个离散代数方程。这是整个 FVM 的骨架。
2.空间离散的由来
当我们处理空间项时,面对的是一个连续分布在三维空间中的物理场。计算机无法存储连续函数,只能存储离散的数值。这就是“离散化”的由来。
空间离散的基本思路:用有限个网格节点上的值,代表整个连续场 。但问题来了:在控制体积分中,我们需要面上的通量,而这些面位于节点之间。怎么办?
答案是:需要假设物理量在节点之间的分布规律,这就是“插值”或“离散格式”的作用。
例如,Green-Gauss单元基梯度计算中,面上的值取相邻单元中心值的算术平均
不同格式(一阶迎风、二阶迎风、QUICK、MUSCL等)本质上是对节点间分布的不同假设 。QUICK格式假设抛物线分布,MUSCL格式可以实现三阶精度,等等。
所以为什么叫"离散"??
因为空间处理的本质是:用离散的节点值去代替连续的面积分。 我们引入插值格式,在空间上将连续函数打断成一段一段的分段近似。
这是一种截断近似,精度取决于插值阶数。"Spatial Discretization" 的名字,就来自这个过程。
3.时间积分的由来
现在来看时间项。时间与空间有着本质的不同:空间是三维的“场”,而时间是一维的“演进”。我们对时间的需求不是在某个点上的值,而是从上一时刻到下一时刻的变化量。
Fluent理论手册中明确写道:
“Temporal discretization involves the integration of every term in the differential equations over a time step.” (时间离散化涉及将微分方程中的每一项在一个时间步长内进行积分。)
这里的关键词是 “integration”(积分)。为什么?
通用的时间演化表达式可以写为
其中函数F包含了所有的空间离散项。从 t时刻到 t+Δt时刻,ϕ的真实变化应该是:
其中的ϕ(n+1)是下一个时间步的变量,也是我们想要求解的。这是一个精确的积分表达式。
由于F(ϕ)是ϕ的函数,而ϕ和时间有关,因此F(ϕ)也随时间变化。但问题是我们不知道 F(ϕ) 在时间区间内的具体变化,所以需要对积分进行近似。
如何近似呢??我们假设一种最简单的方式
假设 F(ϕ)保持为当前时刻的值 F(ϕn),那就是说在Δt时间内,F(ϕ)是不变的,一直是F(ϕn),那等式的右边就可以直接积分了:
将右边的Δt移动到等式左边,方程就变为了
此时ϕ(n+1)可以直接计算出来,这就是Fluent理论手册上,时间积分的一阶显式格式。
这个方程确实很像离散化的方程,这就是为什么我们会很容易产生误解。但它是从积分近似推导出来的,而不是直接对时间导数做差分离散。
关于时间的积分格式有几种,时间积分格式会影响计算的稳定性,库朗数的设置范围就和积分格式有关。关于详细的内容,我们下篇文章再详细说明。
无论哪种格式,数学本质都是对时间积分的近似,而不是对时间导数的直接离散。 这就是为什么Fluent手册坚持使用“Temporal Integration”而不是“Temporal discretization”。
4.通俗理解
我们可以通俗一点理解:
空间离散相当于决定用多少个像素点来构成每一帧画面。像素点越多,空间分辨率越高(对应网格细化)。每个像素记录的是该点的瞬时信息。
时间积分相当于决定快门速度。快门打开的时间越长,累积的光线信息越多(对应时间步长)。最终的画面记录的是这段时间内的积分效果。
如果你用高速摄影机拍摄子弹飞行,你捕捉的是近乎瞬时的状态;

如果你用长曝光拍摄星轨,你记录的是时间积分的效果。

但无论哪种,相机底片记录的始终是一段时间内光线的积分,而不是某个瞬间的导数。
Fluent 用 Spatial Discretization 和 Time Integration 来分别描述空间和时间的处理,不是随意的命名,而是对两种操作数学本质的精准表达。