张庆海 李阳
(浙江大学数学科学学院, 杭州 310027)
不可压Navier-Stokes方程是流体力学的基本控制方程, 其高精度数值模拟具有重要的科学意义.本综述性文章回顾了求解Navier-Stokes方程的投影方法, 重点介绍了时空一致四阶精度的GePUP方法.该方法用一个广义投影算子对不可压Navier-Stokes方程进行了重新表述, 使得投影流速的散度由一个热方程控制, 保持了UPPE方法的优点.与UPPE方法不同的是, GePUP方法的推导不依赖于Leray-Helmholtz投影算子的各种性质, 并且GePUP表述中的演化变量无需满足散度为零的条件, 因此数值近似Leray-Helmholtz投影算子的误差对精度和稳定性的影响非常透明.在GePUP方法中, 时间积分和空间离散是完全解耦的, 因此对这两个模块都能以“黑匣子”的方式自由替换.时间积分模块的灵活性实现了时间上的高阶精度, 并使得GePUP算法能同时适用于低雷诺数流体和高雷诺数流体.空间离散模块的灵活性使得GePUP算法能很好地适应不规则边界.理论分析和数值测试结果都显示, 相对于二阶投影方法, GePUP方法无论在精度上还是效率上都具有巨大优势.
1900年, 著名数学家希尔伯特在国际数学联盟IMU (International Mathematical Union)巴黎会议上提出了23个数学问题, 这个列表极大地影响了20世纪的数学发展.1998年, 菲尔兹奖得主Smale[1]应IMU的邀请, 给出了18个他认为在21世纪非常重要的数学问题.2000年5月, 克雷数学研究所发布了七个千禧年数学问题[2], 由于这些问题的重要性, 解决其中任何一个都能获得100万美元的奖金.在千禧年数学问题和Smale的18个问题中, 有一个问题同时存在, 它就是三维空间中Navier-Stokes方程全局解的存在性和正则性.
数学家们对Navier-Stokes方程的重视源于该方程极其广泛的应用, 尤其是该方程的解对于理解湍流很可能具有根本性的重要意义.如果一个牛顿流体是性质均匀且各向同性的, 其不可压Navier-Stokes方程 (INSE)的基本形式为
其中t是时间变量,x∈RD是空间变量( D =2,3 ),g是外力项,ν是动力黏性系数,p(x,t) 是压强, 而u(x,t) 是流速.假定流速场的初始条件u0∈C∞光滑无源, 并且其空间导数满足一定的有界条件, 对于外力项的空间时间偏导数也做类似假定.在千禧年问题中, 空间域Ω是 R3或3-环面( R3/Z3), 因此Ω没有边界.但是在实际物理问题中, 往往需要指定(1)式中的边界条件.除周期边界条件外, 本文主要讨论最普遍也是最重要的无滑移边界条件:
在无滑移边界条件下, 中高雷诺数不可压流体往往含有多个时间尺度和多个空间尺度的流动结构.因此在进行数值模拟时, 数值方法也必须拥有足够的精度来捕捉所有相关尺度的特征, 这对计算效率提出了极大的挑战.一阶和二阶方法的计算结果虽然可以收敛, 但是为了达到给定的计算精度,有限的计算资源可能会很快地消耗殆尽.另外, 至关重要的湍流特征往往取决于流速场的梯度或高阶导数.例如, 涡量是流速的一阶导数, 而转捩点是切向流速的二阶法向导数为零的位置.低阶方法的流速场计算结果虽然可以收敛, 但是对于流速导数决定的重要物理量往往存在较大的误差.综上所述, 我们希望发展一个时空一致高阶方法, 达到以下五个目标:
(Goal-1) 在时间上和空间上同时达到四次收敛阶;
(Goal-2) 在每个时间步内只需求解常数个关于压强或关于流速的线性方程组, 并且方程组求解的复杂度为O(N) , 这里N是控制体个数;
(Goal-3) 时间积分方法的具体细节不出现在整体算法中;
(Goal-4) 时间积分与空间离散完全解耦, 也就是说用户可以在一定范围内自由选择空间离散和时间积分模块组合成一个整体;
(Goal-5) 同时适用于高雷诺数和低雷诺数流体.
众所周知, 当动力黏性系数很大时, INSE的半离散系统具有刚性, 需要对(1a)式中的扩散项采用隐式时间积分, 否则时间步长的选取将受到数值稳定性非常苛刻的限制.而当动力黏性系数很小时, 对流占优使得INSE的半离散系统不具有刚性, 此时用显式时间积分方法也可以使时间步长免受稳定性的限制.如果不能满足(Goal-3), 那么针对不同情况更换时间积分方法将是一件非常繁复的任务.反之, 如果能以“黑匣子”的方式调用高阶时间积分模块, 将会实现(Goal-4), 同时能为整体算法提供最大的灵活性, 从而轻松实现(Goal-5).因此, (Goal-5)可以看成是(Goal-3)和(Goal-4)的副产品.
在第2节预备知识和第3节经典投影方法的基础上, 本文重点介绍了一个满足上述所有目标((Goal-1)—(Goal-5))的四阶投影方法GePUP[3−5], 该方法达到核心目标((Goal-3)和(Goal-4))的关键是策略性地利用投影算子处理不可压约束条件(1b)式.第4节推导INSE的另一种表述, 作为GePUP方法的控制方程, 并简要总结了在有限体积框架下的数值算法.由于(Goal-4)带来的灵活性, 用针对不规则区域的离散格式替换经典有限体积离散格式就得到了一个时空一致四阶精度, 适用于不规则区域的投影方法.第5节中的数值实验结果验证了GePUP算法的时空一致四阶精度及其捕捉真实物理过程的能力, 其中5.4节系统地论述了GePUP算法相对二阶方法[6,7]在精度和效率上的优越性.
与流速场不同, 动量方程(1a)中的压强p既不需要初始条件也不需要边界条件.这是因为Helmholtz分解定理指出, 有界区域Ω⊆RD上任何充分光滑的向量场v∗都可以被唯一地分解为一个无源场v和一个无旋场∇ϕ之和:
该分解可以通过求解Neumann边界条件下的Poisson方程实现:
其中n表示区域边界∂Ω的单位外法向量.
如果定义欧拉加速度
则可将动量方程(1a)写成(3a)式的形式:
因此压强可由欧拉加速度a∗在相差一个常数的意义下由Helmholtz定理唯一确定, 并且在这个确定过程中无需任何p的边界条件, 或者说p的边界条件也是由欧拉加速度a∗和a在边界上的法向分量确定的.另外一个从流速场u得到压强的方法是对动量方程(1a)求散度, 应用(1b)式后可以得到关于压强的Poisson方程, 从而求解出压强及其梯度.
下面的定理在很多偏微分方程的教科书上都可以找到, 如文献[8]:
定理1如果f和g足够光滑, 具有Neumann边界条件的Poisson方程
解存在的充要条件是
并且ϕ在相差一个常数的意义下是唯一确定的.
容易验证(4)式满足可解条件(8)式且∇ϕ唯一确定.因此对于任意给定的向量场v∗都可以唯一确定(3a)式中的无源场v.由这个唯一性可以定义一个线性算子, 称为Leray-Helmholtz投影算子, 从而把Helmholtz定理中的分解步骤整合其中,
由(3b)式可知, 在任意时刻P都满足
将Leray-Helmholtz投影算子作用在欧拉加速度a∗上可以得到a, 从而得到压强梯度这个压强梯度的提取方式与时间无关.
在周期边界条件下, Leray-Helmholtz投影算子和Laplace算子 ∆ 是可交换的, 将作用于(1a)式, 再结合(10)式中最后一个性质可得
在应用Method-of-lines (MOL)方法数值求解INSE时, 由于(1b)式不是一个动力过程而是一个限制条件, 直接对(1)式进行离散得到的常微分方程组很难在求解过程中保证收敛阶[9].相比来说, (11)式是关于流速场的一个动力过程, 可以直接应用MOL方法.这是(11)式相对于(1)式的一个显著优势.
在无滑移条件下, Leray-Helmholtz投影算子和Laplace算子 ∆ 是不可交换的.为了度量这两者的不可交换性并推导出不带约束条件的关于流速场的动力过程, 定义Laplace-Leray交换子为
为了推导其表达式, 先定义梯度-散度交换子
满足
其中(14a)式是由(13)式以及 ∆ 和∇·的交换性得到的, 而(14b)式是由(9)式, ∆ 和∇的交换性,(4a)式以及(13)式得到的:
应用于(15)式的第一和第三项, 结合(10)式中最后一个性质, 可得
因此Laplace-Leray交换子满足
其中I表示恒等算子.由 (9)式知因此是某标量场的梯度, 若令v∗为(1)式中的流速u, 得到的标量场称为 Stokes压强, 其梯度满足
由(17)式和(18)式可得
结合(10)式中第二个性质以及(14a)式可得∆ps=0 , 即Stokes压强既无旋也无源, 是调和的.
定义标量pc满足
应用Leray-Helmholtz投影算子于(1a)式, 再由(6)式, (17)式, (18)式及(20)式可得
因此INSE中的压强梯度由两部分构成, 其中∇pc平衡外力项和非线性对流项的散度, 而∇ps度量了 Laplace算子和Leray-Helmholtz投影算子的非交换性.在ν→0 和ν→+∞这两种极限情况下, 压强梯度相应地由∇pc和ν∇ps所主导, 因而INSE的性质在这两种情况下会有很大的差别.
鞍点法[10]将 (1)式中的流速和压强耦合起来同时求解.例如, 由Crank-Nicolson方法可得
由于矩阵A具有鞍点结构, 这个方法被称为“鞍点法”.同时求解流速和压强使得线性方程组中的未知量个数最大化, 因此这种方法对方程组的求解效率提出了很大的挑战[11].另外, (23)式中矩阵A的推导依赖于空间离散和具体时间积分方法的细节.对于较为复杂的时间积分方法, 如高阶Additive Runge-Kutta (ARK)方法, 矩阵A的复杂性往往是难以接受的.因此, 这个方法难以实现(Goal-3)和(Goal-4), 从而也难以做到(Goal-1)和(Goal-2).
1968年, Chorin[12]提出了以下一阶投影方法:
其中C(u∗,un) 是对对流项的近似,P=I−GL−1D是对Leray-Helmholtz投影算子的一个近似.该方法首先在忽略压强梯度项的情况下计算一个辅助流速场u∗, 再将u∗投影到散度为零的空间上来实现不可压约束(1b)式.由于流速和压强在计算域内解耦, 在每个时间步内, 都只需要求解一系列关于流速或压强的边值问题, 因此线性方程组的规模较鞍点法会小很多, 这种效率优势可能是投影方法得到广泛应用的重要原因之一.
在Chorin的基础上, 学者们提出了许多二阶投影方法[13,6,14−17], 出发点是先对INSE进行时间上的二阶隐式离散:
这里 [(u·∇)u]n+1/2表示对流项在时刻tn+1/2的显式二阶近似.如果再进行空间离散就得到了鞍点法的(22)式.与Chorin的投影方法类似, 可以引入辅助变量将压强和流速解耦.不同的是, 达到二阶精度需要引入两个辅助变量.
定义2分步二阶投影方法由以下三个步骤构成[17]:
(Proj-1) 选择一个边界条件B(u∗)=0 以求解辅助变量u∗:
(Proj-2) 利用投影算子实现不可压约束(25b)式:
注意ϕn+1的边界条件要与un+1的物理边界条件以及u∗的边界条件B(u∗)=0 相容.(Proj-3) 更新压强pn+1/2:
一个具体的分步二阶投影方法由以上步骤中的三个要素确定, 即压强近似函数q、辅助变量u∗的边界条件B(u∗) 以及压强更新函数U.其中投影步骤(Proj-2)通过求解Neumann边界条件下的Poisson方程实现:
将(27a)式代入(26)式, 结合(25a)式知(Proj-3)步骤中的压强更新公式(28)式可写为
以下简要回顾在定义2的框架下的两个经典的二阶投影方法.
3.3.1 Bell, Colella & Glaz (BCG)
Bell, Colella和Glaz[6]指定
在文献[17]中, 作者运用正则模式分析和数值实验验证了在L∞范数度量下, 该方法对于流速的求解是二阶收敛的, 而压强的计算结果则仅有一阶收敛.造成压强降阶的原因是(31)式中对压强梯度的更新公式与(30)式是不匹配的, 忽略(30)式中的高阶项会导致压强p的精度损失(通常会出现边界层)以及压强梯度在边界上的不准确.的确,(29b)式和(31)式意味着
而这一般是不对的.但若修改(31)式中的压强梯度更新公式使得其与(30)式一致, 即
则对流速和压强的求解都能达到二阶精度[17].
Martin, Colella和Graves提出了BCG方法的改进版, 称为MCG方法, 见5.4节.
3.3.2 无压投影
在Kim和Moin[13]提出的无压投影方法中,压强近似变量q不出现在辅助变量u∗的求解过程(Proj-1)中:
其中τ为∂Ω的单位切向量, 而q=0 这一选择导致u∗与un+1之间差别较大; 如果达到二阶精度, 其边界条件不能简单地提为u∗|∂Ω=0.由于n·un+1的正确性总能由投影步骤(Proj-2)保证, 因此从理论上说u∗的法向分量n·u∗的选择具有很大的灵活性.但从数值计算角度看,u∗的边界条件选取方式会影响u∗在靠近计算域边界处的性质, 也会对压强p在边界处的性质产生影响.的确, (29a)式和(33c)式意味着
在文献[17]中, Brown等用数值实验展示了除非选择u∗的边界条件使得其在靠近边界处光滑, 否则该方法求解压强时不能达到二阶精度.
分步二阶投影方法虽然取得了巨大的成功, 但要直接将其推广到更高阶精度是非常困难的, 主要表现在定义2中三个不确定因素的耦合: 若改变时间积分方法, 则三个因素的选取方式全都需要重新推导, 这无疑是极其繁琐的.其次, 辅助变量u∗不具有物理意义, 其边界条件必须通过具体时间积分方法的细节来进行推导.另外, 压强和流速尽管在计算域内部是解耦的, 但它们在边界上仍然通过辅助变量u∗耦合在一起.综上所述, 用分步二阶投影方法很难达到第1节中的五个目标.也正是因为这些原因, 之前很多学者把投影方法称为时间分步法, 并认为它是不可能达到四阶精度的.
在二阶投影方法中, 对辅助变量u∗提恰当的边界条件通常比较困难.Weinan和Liu[15]提出了Gauge方法, 该格式的出发点是用规范变量χ来替代压强p, 他们还引入辅助变量
并策 略性地选择χ和m使得由此导出的流速u和压强p满足INSE.考虑
由(34)式, (35a)式和(1a)式可得
(34)式和(35)式的优势在于可以用规范变量的自由度来对m和χ提明确的边界条件, 例如
或对控制方程(34)式, (35)式及边界条件(37)式离散后得到以下定义.
定义3Gauge方法包括以下步骤:
(GM-1) 求解规范变量mn+1:
注意,mn+1的边界条件要与(mn+1−∇χn+1)|∂Ω=0相容,
其中第二个等式是由外插公式(χn+1≈2χn−χn−1)近似后得到的.
(GM-2) 求解流速un+1:
其中χn+1满足
(GM-3) 如果需要的话, 压强p可由(36)式得到:
该方法对流速u和压强p都能达到二阶收敛,并且(40)式中使用的外插公式是必要的, 若仅使用滞后值χn则只有一阶精度[15].由边界条件(40)式可知, 该方法与前面提到的方法具有同样的问题, 即具体算法依赖于时间积分方法的细节.
Pressure Poisson Equation (PPE)方法[18−24]的核心理念是用一个压力Poisson方程替换流速的不可压条件:
其中(44c)式是对动量方程(1a)取散度后结合不可压约束(1b)式得到的, 而(44d)式是由(44a)式的法向分量及无滑移边界条件得到的.若将∇·u=0作为(44)式的边界条件, 则(44)式等价于INSE[19].
相对于前面四小节中的方法, PPE方法最大的优势在于可将时间积分模块完全看成“黑匣子”:流速u是(44)式中唯一的演化变量, 而压强p可视为u的隐函数.在任一时刻, 压强都可以按照(44c)式从流速中提取出来, 并且p和u的边界条件不再与时间积分方法的细节相耦合.当应用一个时间积分方法的时候, 只要给出了(44a)式右端项在该方法指定时刻的“样本”值, 就可以根据该方法的“契约”得到流速在时间上的高阶解.在这个过程中, 无需知道该时间积分方法的任何细节.
PPE方法(44)式也存在一些不足之处.首先,其推导过程假设了流速的不可压条件总是成立的;由于(44c)式的推导过程依赖于(1b)式, 要分析近似(1b)式产生的误差对INSE解的影响是很困难的.更重要的是, (44a)式和(44c)式意味着即流速散度的耗散是退化的, 也就是说在应用该方法时对流速散度是没有控制的.数值实验结果显示, 直接对PPE方法的控制方程进行MOL离散得到的四阶方法是不稳定的.
利用2.3节中的Laplace-Leray交换子估计,Liu等[22]提出了以下UPPE (Unconstrained PPE)方法:
该方法相对PPE方法的优势在于对(45a)式取散度后结合(45c)式可得因此流速的散度由一个热方程所控制, 根据热方程的极大值原理, UPPE格式(45)式对流速散度∇·u的控制要比原始PPE格式(44)式可靠得多.在有限元离散的框架下, 数值实验结果[23]印证了UPPE方法的稳定性.
在把(45)式中的UPPE表述应用于基于MOL的有限差分和有限体积方法的时候我们遇到了困难.首先, 直接对控制方程(45)进行MOL离散再求解常微分方程组得到的算法是不稳定的.虽然在时间积分的过程中对流速的中间变量进行投影有时可以得到稳定的收敛结果, 但是由于控制方程(45)中并没有出现任何投影算子, 这个对流速中间变量进行投影的额外步骤是直接违背原方程的.另外, 即使可以把控制方程(45)中的一些u用进行替换, 也很难找到一个离散的四阶投影算子P满足Leray-Helmholtz投影性质 (10)式.换言之,离散四阶投影P难以满足以下任何条件:
其中〈u〉和〈ϕ〉是定义在控制体上的平均值,D和G分别是离散散度算子和离散梯度算子.由于计算域的非周期性和四阶精度要求, 这一困难在交错网格上仍然存在.
UPPE表述(45)式的推导过程依赖于Leray-Helmholtz投影的性质(10)式.在这种情况下, 如果仍然把不可压流速场作为动力系统的演化变量,那么用一个不满足(47)式的离散投影算子来近似Leray-Helmholtz投影算子产生的离散误差将对数值稳定性造成怎样的影响呢? 这个问题在UPPE表述下是难以回答的, 我们认为这也是导致UPPE表述的MOL离散格式不稳定的根本原因.
为了在理论上刻画不满足(47)式的离散投影算子, 4.1节定义了一个广义投影算子(generic projection).在4.2节中, 我们首先推导Laplace算子和广义投影算子的交换子, 然后在4.3节中将它作用在INSE上得到GePUP表述.这三小节理论推导背后的主要思想是, 既然满足(47)式的离散投影算子难以找到, 投影以后的流速场也不一定能完全满足不可压条件, 那么索性将散度不为零的流速场作为动力系统的主变量.之后四小节内容讨论在GePUP表述基础上的离散算法.其中4.4节介绍经典的有限体积离散, 4.5节列举了一些四阶离散算子的形式, 4.6节简述了如何把4.4节和4.5节中对于规则区域的空间离散推广到不规则区域上,4.7节引入时间积分, 总结了GePUP-IMEX算法的主要步骤.
广义投影算子是向量空间上的一个线性算子,其输入向量与输出向量之差为一个梯度场:
其中∇·v=0 不一定成立.对于非周期边界条件的有界区域, 还要求广义投影算子P保持输入流场的法向边界条件, 即
无穿透边界上的Leray-Helmholtz投影算子显然是一个广义投影算子.
对一个给定的广义投影算子P, 由(48)式和(49)式知以下Poisson方程
满足定理1中的可解条件, 从而可唯一确定∇ψ.但是通常
例如ψ−ϕ可以是2.3节中提及的Stokes压强.
因此, (48)式中的Pv∗=v∗−∇ψ并不是对v∗的唯一分解, 而是由给定的P直接决定了梯度场∇ψ.由于许多向量场无法写成梯度场的形式, 因此(48)式和(49)式定义的广义投影算子是一种特殊的线性算子, 其特殊性在于总是为输入的v∗选择一个输出Pv∗, 使得两者之差为一个梯度场.
为什么可以用广义投影算子来刻画那些不满足(47)式的离散投影呢? 这是因为离散投影通常是Leray-Helmholtz投影的一个高阶(p≥4 )近似, 从而有
和∇ϕ相比, 高阶小量O(hp) 往往可以忽略.
首先定义梯度-散度-投影交换子为
由(48)式、 ∆ 和∇的交换性以及(13)式可得
因此
对(52)式中第三项和最后一项应用P, 有
整理后得到
由(53)式, (54)式和 (51)式可得 Laplace算子和广义投影算子的交换子为
若P满足(10)式, 则 [∇∇·,P]≡0 , 此时(55)式简化为(17)式.
由4.1节中的讨论可知, 当广义投影算子P作用在一个散度为零的流场u上时, 可以看成是对u加一个梯度扰动项使其散度不一定为零.在文献[5]中, 我们对动量方程(1a)应用广义投影算子P并结合 (55)式和(51)式推导了 INSE的GePUP表述.本文的推导过程在形式上略有不同.
由(6)式, (53)式, (5)式以及(15)式可得
其中梯度场∇q定义为
由(6)式及广义投影算子的定义可知 (58)式的右端确实是个梯度场.标量q可由如下Neumann边值问题确定:
其中(59a)式是对(58)式取散度后由∇·和 ∆ 的交换性得到的, 而(59b)式是 (58)式的法向分量.在无穿透边界条件下, 由(5)式和(49)式可得
另外, 无滑移条件(2)式意味着对流项在边界上为零:
再结合(5)式知可用g+ν∆u替换 (59b)式中的a∗.
定义投影流速
并假设其散度满足
可以得到无滑移边界条件下INSE的GePUP表述:
其中(64a)式是由 (57)式和假定(63a)式得到的,(64e)式是由(59a)式和假定(63b)式得到的, 边界条件(64f)式来自于(59b)式, (60)式以及(61)式.由于广义投影算子对不可压流场u的扰动是增加了一个梯度项, 而任何梯度都在Leray-Helmholtz投影算子的零空间中, 因此(64c)式显然成立.
在(64)式这个三变量系统中, 投影流速w是唯一演化变量, 无源流速u由w唯一确定, 而压强梯度∇q又由u唯一确定.因此(64)式可以看成是关于w的动力过程, 对其进行空间MOL离散之后得到一个常微分方程组, 而求解这个常微分方程组的时间积分方法可作为“黑匣子”使用, 这样就可以实现第1节中的(Goal-3).
上述GePUP表述保持了UPPE表述的核心优势, 即投影流速的散度由一个热方程所控制.确实, 对(64a)式取散度并结合(64e)式可得
若在∂Ω上指定边界条件∇·w=0 , 则由热方程的极大值原理可知∇·w在Ω上随时间呈指数衰减①在数值算法中, 将 ∇ ·w=0 和 ∇ ·u=0 附加到(64)式中对流项以及扩散项的计算中.在不规则边界附近, 这些条件耦合了不同流速分量之间的多维高阶多项式拟合..
GePUP表述相对UPPE表述的优势有以下几点:
(I) 推导过程不依赖于任何Leray-Helmholtz投影算子P的性质(10)式;
(II) 演化变量w没有不可压限制条件;
(III) 投影算子P出现在(64)式的右端, 因此用离散投影算子来近似P时对数值精度和算法稳定性的影响非常清晰.
对一个满足不可压条件的w的初始值来说, 如果INSE的解存在且唯一, 热方程(65)将使得假定(63)式成立.但如果INSE的解本身将爆破的话, 其散度必先爆破.因此只有当INSE在理论上确实有解的时候我们的计算才有意义, 换言之, 我们无法通过重新表述INSE的方式回避其解存在性的千禧年问题.这是假定(63)式背后的主要思想.
用正方形网格划分计算域Ω, 并以多元索引i∈ZD代表第i个控制体Ci, 其区域为
控制体i在维度d上的高侧界面表示为
其中xO∈RD是固定的坐标原点,h是均匀网格间距, 1∈ZD是分量全为1的多元索引,ed∈ZD表示第d个分量为1, 其余分量全为0的多元索引.
如图1所示,ϕ在控制体Ci上的平均值定义为
图1 面平均值和控制体平均值.面平均值用带 〈·〉 且下标为分数的符号表示, 而控制体平均值对应下标为整数.因此 和 表 示 面 平 均值, 而 〈 ϕ〉i 是控制体平均值[5]Fig.1.Notation of face-averaged and cell-averaged values.A symbol with angled brackets denotes either a cell-averaged value if the subscript is an integer multi-index, or a face-averaged value if the subscript is a fractional multiindex.Hence and are face-averaged values while 〈 ϕ〉i is a cell-averaged value.Horizontal and vertical hatches represent the averaging processes over a vertical cell face and a horizontal cell face,respectively.Light gray area represents averaging over a cell[5].
而ϕ在控制体边界面上的平均值定义为
这两种平均值之间的关系可通过微积分基本定理得到[25]:
由于控制体中心的点值和控制体平均值之间相差O(h2) , 二阶有限体积方法不需要对它们进行区分, 而在四阶方法中则必须考虑这一差异.此外,作用于平均值上的有限体积算子与作用于点值上的有限差分算子是不同的.
离散梯度、离散散度以及离散Laplace算子分别定义如下:
离散散度算子D还可作用在张量平均值上
其中两标量乘积的面平均值可近似为
而表示横向离散梯度算子
命题4(71)式—(75)式中的离散算子都具有四阶精度:
证明见文献[4].
如图2所示, 我们在计算域边界之外再设置两层虚拟单元.如果是周期性边界条件则直接把计算域内对应控制体的值复制到虚拟单元中, 否则由给定边界条件外插得到虚拟单元的平均值.例如, 对于Dirichlet边界条件ψ=0 , 用以下五阶公式来填充虚拟单元i+ed及i+2ed:
图2 计算域边界上的两层虚拟单元 ( d=1).粗实线代表域边界, 细实线表示内部控制体, 而虚线表示虚拟单元[5]Fig.2.An example ( d =1 ) of ghost filling for the domain boundary.The thick line represents a physical boundary,the thin solid lines interior cells, and the dotted lines ghost cells[5].
在确定了所有虚拟单元上的平均值之后, 再用格式(71)式—(74)式计算离散算子.这样做的好处是将边界条件和连续算子的离散形式完全解耦.
用(71)式—(73)式可定义离散投影算子
由可知.在周期边界条件下,P是对Leray-Helmholtz投影算子P的四阶近似, 并且可以证明其谱半径和2-范数都是1[4].在无滑移边界下,P不是对称矩阵, 但是数值实验验证了P的谱半径不大于1[5].总之,P可以看成是有限维线性空间上的广义投影算子, 作为对GePUP表述(64)式中Leray-Helmholtz投影算子的近似.
如果计算域Ω是不规则的, 我们仍然使用正方形控制体离散一个包含了Ω的矩形区域, 并定义控制体流相Vi:=Ci∩Ω.当Vi=Ci,∅时, 分别称Ci为纯流相和无流相控制体, 这两种以外的情况称为边界控制体.记‖V‖为控制体流相V的体积, 定义ϕ在V上的平均值为
对于远离边界的纯流相控制体, 空间算子L在其上的平均值〈Lϕ〉i可以用4.5节中的离散算子近似到四阶精度.在图3(a)的例子中,L=∆.对于边界控制体Ci或其附近的纯流相控制体, 我们也希望用一些控制体平均值的线性组合来近似〈Lϕ〉Ci.如图3(b)所示, 主要思路是用选定控制体的平均值以及边界条件拟合一个多维完全多项式.其核心难点是如何选择Vi附近的一组控制体流相使得多项式拟合的方程组有唯一解,这个问题最终归结为在ZD中找到个点满足一些适定条件.我们提出了一个基于对称群作用的回溯算法[27], 见图4.
图3 在不规则计算域上用正交网格离散Laplace算子 ∆ [26]Fig.3.Discretizing the Laplacian on irregular domains with rectangular grids[26].
图4 从给定起始点开始选择一组格点以拟合多维n次完全多项式.用拟合的完全多项式可以离散空间算子, 并且能很方便地满足边界条件[26]Fig.4.For a given starting point, we choose a set of nodes to fit a high-order, multi-variate, complete polynomial, which facilitates the discretization of spatial operators and the enforcement of boundary conditions[26].
对(64)式在控制体上积分, 并用离散算子近似连续算子的积分, 可得常微分方程组:
其中外力项〈g〉已知, 未知量是控制体平均值向量〈w〉, 而〈u〉和〈q〉都可以通过〈w〉得到.(81)式的初始条件为〈w〉(t0)=〈u〉(t0) , 边界条件可由(64)式得到.
由于P是对Leray-Helmholtz投影算子的四阶近似, 结合命题4可知常微分方程组(81)是对 GePUP表述(64)式的四阶离散.
在求解半离散系统(81)式时, 时间积分方法可以完全作为黑匣子使用.在文献[5]中我们把GePUP和IMEX方法[28]耦合起来得到了一组求解INSE的半隐式时间推进算法, 称为GePUPIMEX.这里以Kennedy与Carpenter[29]提出的ERK-ESDIRK方法作为一个例子来阐述GePUPIMEX算法.
对于
ERK-ESDIRK方法在每个时间步的求解步骤如下:
其中上标 (s) 代表中间阶段,t(s)=tn+cs∆t是该阶段对应时刻;ns是总阶段数;A,b,c是Butcher表中的系数.A[E],b和c表示一个ERK方法, 而A[I],b和c表示一个ESDIRK方法.在每个中间阶段,ψ(s)通过求解线性方程组(83b)得到, 其中右端项是结合前面步骤值计算得到的, 故(83)式确实属于半隐式格式.另外(83c)式是由得到的.有关该方法的更多细节请参考文献[29].
对GePUP半离散系统(81)定义
并套用ERK-ESDIRK方法(83)式的契约, 我们得到如下的GePUP-IMEX算法:
在初始时刻t=t0, 有〈w〉0=〈u〉0≈〈u(t0)〉.
GePUP-IMEX算法(85)式的具体步骤直接来自于将ERK-ESDIRK方法应用到GePUP的半离散系统(81)式上.其中(85b)式的第一步对应于(81a)式和(81b)式, 而(85b)式的第二步对应于
(81c)式, 即用离散投影P将〈w〉(s)映成〈u〉(s), 以
便为下一阶段计算X[E](〈u〉(j),t(j)) 做好准备.在(85c)式中, 算子X[E]中的非线性对流项导致〈w〉∗的散度要远大于中间阶段〈w〉(s)的散度, 因此我们将该时间步的最终解〈w〉n+1设置为〈u〉n+1.
根据(85b)式和(81)式, 在每个中间阶段, 需要求解三个线性方程组.
(HLS-1) Neumann边界条件下的Poisson方
程(81b): 用来从〈u〉中提取〈q〉;
(HLS-2)无滑移边界条件下的Helmholtz方程(85b): 用来在时间上推进〈w〉;
(HLS-3) Neumann边界条件下的Poisson方程(81c): 用来对〈w〉∗进行投影.
求解这些方程组的具体算法见文献[5].在(85c)式中, 需要求解(HLS-1)和(HLS-3), 因此在每个时间步内, GePUP-IMEX算法(ns=6 )总共需要求解17个线性方程组.我们使用的方法是标准的多重网格V循环, 其中光滑迭代为加权Jacobi方法(ω=2/3 ), 网格转移算子为单射算子和常值限制算子[30].由于−L属于本性正型[31,32],具有M-矩阵的良好性质, 例如正定性等.(HLS-2)中的算子的特征值的实部全为正,因此经典几何多重网格方法对三个线性方程组的求解都相当高效.
为了估算稳定的库朗数范围, 我们将对流项线性化, 再用与处理对流扩散方程[25]同样的方法可估算稳定的库朗数范围为
综上所述, GePUP-IMEX算法是将IMEX时间积分方法直接应用到GePUP半离散系统上得到的.这个简单的思路对于其他时间积分方法如显式Runge-Kutta方法也是适用的, 具体步骤往往会更简单.例如, 我们将经典四阶Runge-Kutta方法应用到GePUP半离散系统上得到的算法称为GePUP-ERK算法[5].
在不规则区域(倾斜正方形)
上给定流速和压强的精确解
可以根据动量方程(1a)推导出本节测试中使用的外力项g.
在计算域(87)上, 用(88)式设置流速场的初始条件和无滑移边界条件, 用GePUP-ERK算法将INSE的解从t0=0 推进到te=0.1.表1列出了最终时刻结果的误差和收敛阶, 显然流速u和压强p都能达到四阶收敛.
表1 用GePUP-ERK算法在不规则计算域(87)上求解以(88)式和(89)式为解析解的INSE得到的误差和收敛阶.Re = 1000, t 0=0 , t e=0.1 , C r=0.2 [5]Table 1.Errors and convergence rates of GePUP-ERK for solving the INSE on the irregular domain (87) with Eq.(88)and Eq.(89) as the analytic solutions.Re = 1000, t 0=0 , t e=0.1 , C r=0.2 [5].
三维顶盖驱动方腔内的不可压缩流动几乎表现出流体力学中所有常见的现象: 漩涡、二次流、混沌粒子运动、不稳定性、过渡、湍流和如展向涡的复杂三维流动结构[33], 因此其数值模拟具有重要的科学意义.另外由于几何设定非常简单, 顶盖驱动方腔流是检验INSE数值求解方法最常使用的基准测试之一.
在规则计算区域 [0,1]×[0,1]×[0,2] 上, 用GePUP-IMEX算法(85)式对三维顶盖驱动方腔流进行数值模拟.选择的具体参数为: 流速场u=(u,v,w) 的 边界条件为在x=1 处,v=1 , 其余边界上u=0 ; 而在初始时刻,u在计算域内全为0,t0=0 及te=12.雷诺数Re= 1000, 库朗数Cr=0.5 , 均匀网格间距h=1/128.下面的数值结果可以在文献[5]中找到.
图5给出了在时刻t=2,4,6,8,10,12 , 对称平面z=1 内流速场数值解的流线.数值模拟刚开始时, 盖子的移动会沿腔盖产生很大的剪切应力, 并在t=2 之前形成一个漩涡: 位于漩涡中心控制体的流速要比附近所有控制体流速小50倍左右.随着模拟继续进行, 逆时针旋转漩涡附近的高速流体逐渐穿透最初静止的流体, 在t=4 之后不久, 又有另外一个顺时针旋转的漩涡开始形成, 并在t=6变得显著.然后二次涡开始增强并移动到计算域左上角.最终在t=12 时刻, 主涡、二次涡和流速场达到稳定状态.这些特征与文献[34]中的实验结果完全符合.三维与二维顶盖驱动方腔流动的一个主要区别是沿翼展方向壁端涡旋的演化和对称面附近的Taylor-Görtler型涡旋, 图6清晰地显示了时刻t=8,10,12的这些突出特征.
图5 三维顶盖驱动方腔流测试中均匀网格上( h =1/128 )对称平面 z =1 内的流线快照.不同颜色代表不同的 ‖ u‖2 [5]Fig.5.Snapshots of streamlines for the 3D lid-driven cavity test inside the symmetry plane z =1 on a uniform grid with h =1/128.Different colors represent different values of ‖ u‖2 [5].
图6 三维顶盖驱动方腔流测试中均匀网格上( h =1/128 )涡量的x-分量等值面.红色, 橙色, 蓝色和青色对应的涡量x-分量值分别为–0.50, –0.25, 0.25和0.50[5]Fig.6.Isosurfaces of the x component of the vorticity vector for the 3D lid-driven cavity test on a uniform grid with h =1/128.The values of the vorticity component for the red, orange, blue, cyan surfaces are –0.50, –0.25, 0.25, and 0.50, respectively[5].
本文还对GePUP-IMEX算法结果和 Guermond等[34]的实验和计算结果进行了定量比较:图7和图8分别给出了主漩涡的中心位置和在平面z=1,0.5 内的流速剖面图.可以看到, GePUPIMEX算法的计算结果和Guermond等[34]的实验和计算结果都非常符合.此外, GePUP-IMEX算法的某些计算结果, 例如流速的v分量, 要比Guermond等[34]的计算结果更加符合实验数据.
图7 时刻 t =1,2,4,6,8,10,12 对 称平面 z =0 上主旋涡的中心位置比较.“ ◦ ”表示本文的数值结果(由最小化‖u‖2 得到), 而“+”和“ □ ”分别是Guermond等[34]得到的实验和计算结果[5]Fig.7.A comparison of the center locations of the primary eddy in the symmetry plane z =0 at time instances t=1,2,4,6,8,10,12.The circles represent numerical results of this work, which are determined by minimizing the speed ‖ u‖2.The experimental and computational results of Guermond et.al.[34] are represented by the crosses and the squares, respectively[5].
图8 三维顶盖驱动方腔流在时刻 t =12 的流速剖面图比较( h =1/128 ).实线表示本文的数值结果, 即 分别作为 的函数.“ × ”和“ · ”分别表示Guermond等[34]得到的实验和计算结果[5]Fig.8.A comparison of velocity profiles for the three dimensional lid-driven cavity test ( h =1/128 ) at t =12.Solid lines represent computational results of this work, i.e. as a function of and as a function of The computational and experimental results of Guermond et.al.[34] are represented by the solid dots and crosses, respectively[5].
5.1 节验证了基于GePUP表述的INSE投影方法能够达到时空一致四阶精度.在这个基础上,本节的结果进一步验证了GePUP方法精确捕捉实际物理过程的能力.
本节在倾斜正方形((87)式)上模拟二维顶盖驱动方腔流, 并将得到的数值结果与对应规则区域 [0,1]2上的数值结果进行比较.在由点P=确定的域边界线段上, 流速场u的边界条件为
其中
其余计算域边界上u=0 , 而在初始时刻,u在计算域内全为0,t0=0 ,te=60 , C r=0.1.雷诺数Re= 1000, 均匀网格间距h=1/128.
图9和图10分别给出了在时刻t=4,8,32 时的流速场和涡量快照.在规则区域和不规则区域上, 这两个物理量的特征完全一致.
图9 二维顶盖驱动方腔流测试中均匀网格上 ( h=1/128) 的流速场Fig.9.Numerical results of the velocity field in the two dimensional lid-driven cavity test on the unit box and the rotated box with h=1/128.
图10 二维顶盖驱动方腔流测试中均匀网格上 ( h=1/128) 的涡量快照Fig.10.Numerical results of the vorticity in the two dimensional lid-driven cavity test on the unit box and the rotated box with h=1/128.
尽管在许多应用中[35−37], 高阶方法都被认为要优于二阶方法, 但有学者也报告了某些四阶方法的效率事实上是不尽如人意的[38−40], 原因是这些“四阶方法”[38−40]仅能在空间上达到四阶精度, 在时间上的精度仍为二阶.由于求解误差主要是由二阶时间误差主导的, 这些方法在求解非定常流动时精度和效率都相对较低.因此即使一个方法在空间上具有高精度甚至谱精度, 如果时间上只有二阶精度, 我们仍然认为该方法是一个二阶方法.另一方面, 这表明要想获得一个真正的四阶方法并充分发挥其优势, 必须保证时间上的四阶精度.现有文献中对四阶方法与二阶方法的比较缺乏系统的论述,本节回顾文献[5]中给出的一个性能比较公式.
在比较具有不同收敛阶的INSE数值方法的效率时, 作以下两个假定:
(ECA-1) 求解线性方程组的时间远大于显式计算离散算子所耗费的时间;
(ECA-2) 求解单个线性方程组消耗的CPU时间与其未知量个数成线性关系.基于这两个假定, 有:
命题5定义一个ξ阶方法相对于一个η阶方法的性能加速比为
其中ξ,η∈R+,ξ≥η,Tξ(ϵ) 和Tη(ϵ) 分别是ξ阶 方法和η阶方法达到给定精度ϵ需要的CPU时间.则对于任一给定问题有[5]:
其中nT是在同一网格下求解该问题时ξ阶方法与η阶方法所需CPU时间的比值, 而Eξ和Eη分别是该固定网格下相应的误差,Eξ≤Eη.
证明设hξ(ϵ) 和hη(ϵ) 分别是该ξ阶方法和η阶方法为达到给定精度ϵ所取的网格间距, 则
其中f=Θ(g) 是 指存在常数cl,cu>0 使得clg≤f≤cug.
根据假定(ECA-1)和(ECA-2), 可得
其中cξ和cη是两个正常数,的幂次中的“+1”是由于初始值需要被推进Θ(1/h) 个时间步才能得到最终解.由性能比Sξ|η(ϵ) 的定义(92)式, (94)式和(95)式可得
其中cξ|η对于该给定问题是个常数.在相同网格上,Eξ和Eη是运行ξ阶方法和η阶方法得到的精度, 而nT是这两个方法消耗CPU时间的比值.假设η阶方法的精度由Eη提升到Eξ需要对网格加密nη→ξ次, 且相邻两网格间距比率为r, 则
其中(97a)式中rη的幂次η是η阶方法的收敛阶,(97b)式是由(95)式得到的.在(96)式中取ϵ为Eξ,再结合(97b)式可得
将(98)式代入 (96)式即可得到(92)式.
利用(93)式, 可以对四阶投影方法GePUPIMEX和Martin等[7]提出的经典二阶投影方法MCG①MCG是在C++软件包 Chombo[41]的基础上实现的, 其源代码见文献[42].的效率作比较.
表2给出了在不同的测试中为了达到同样的L2流速计算精度ϵ, GePUP-IMEX相对于MCG的性能加速比S4|2.对于较低的相对精度, 如ϵ=10−4, GePUP-IMEX相对于MCG在效率上的优势还不太明显, 而要达到适中的相对精度, 如ϵ=10−6,10−8, GePUP-IMEX的性能优势是相当明显的.尽管对于其他问题,S4|2的具体值可能与表2中的结果不同, 但是S4|2(ϵ) 是 1 /ϵ的幂函数这一增长模式是始终保持不变的.此外, 即使数值精度不是首要考虑的因素, GePUP-IMEX也允许使用更粗糙的网格来获得与MCG相同的精度, 因此在实际计算时GePUP-IMEX依然具有巨大的效率优势.
由于涡量∇×u是由流速场的一阶导数得到的, GePUP-IMEX和MCG对涡量的计算在L∞范数下分别具有三阶和一阶精度, 表3给出了在不同测试中为了达到同样的L∞涡量计算精度ϵ,GePUP-IMEX相对于MCG的性能加速比S3|1.即使对于很低的相对精度, 如ϵ=10−2, GePUPIMEX相对于MCG在效率上的优势也是非常明显的.
以上展示的测试均是在作者的个人电脑(Intel®i7-3930, 138 GFlop/s)上进行的, 截至2020年11月,世界上最快的超级计算机是日本的 Fugaku(7630848 核, peak performance 537212 TFlop/s)[43],因此由个人电脑切换到超级计算机上进行计算所带来的性能提升最大为 4×106.而注意到表2和表3中许多结果是大于 4×106的, 这说明为了在一些测试问题中达到给定精度要求, 在作者的个人电脑上运行四阶GePUP-IMEX算法比在国际上最快的超级计算机上运行二阶MCG方法都要快!
表2 不同的测试中为了达到同样的 L2 流速计算精度 ϵ , GePUP-IMEX相对于MCG[7]的性能加速比 S 4|2 [5]Table 2.The speedup S 4|2 of GePUP-IMEX over MCG[7] for achieving the same L 2 accuracy ϵ of the velocity[5].
在数值模拟高雷诺数不可压流体的物理过程时, 往往要用到依赖于流速的一阶和二阶导数的物理量, 例如涡量和曲率等.表3中的结果说明了四阶GePUP-IMEX投影方法对精确捕捉高雷诺数流体涡量场的演化过程具有重要的科学意义.
表3 不同的测试中为了达到同样的 L ∞ 涡量计算精度 ϵ , GePUP-IMEX相对于MCG[7]的性能加速比 S 3|1 [5]Table 3.The speedup S 3|1 of GePUP-IMEX over MCG[7] for achieving the same L ∞ accuracy ϵ of the vorticity[5].
随着流体力学的飞速发展, 我们越来越需要研究具有多长度尺度和多时间尺度的复杂物理问题,这对数值模拟在精度上和效率上都提出了越来越高的要求.四阶和更高阶精度的算法极大地提高了计算精度和计算效率, 若进一步将这些算法与并行计算和自适应网格结合, 我们将能解决更多的实际物理问题.
本文首先回顾了一些求解不可压Navier-Stokes方程的经典数值方法, 然后基于广义投影算子和UPPE表述推导了GePUP表述和相应的数值方法.GePUP方法最突出的优势在于时间积分方法和空间离散格式是完全解耦的, 因此这两个算法模块都能够作为“黑匣子”进行处理.时间积分方法的灵活自由选择便于实现INSE解在时间上的高阶精度, 并使得GePUP格式同时适用于高低雷诺数流体.空间离散的灵活自由选择使得算法可以很好地适应不规则边界.数值测试结果印证了该方法的四阶精度及其捕捉实际物理过程的能力, 再结合一个简单的效率比较公式就可以看出四阶GePUP方法相对于现有二阶投影方法在效率上和精度上都具有巨大优势.
目前我们已经将GePUP方法推广到静止不规则区域上, 我们计划将其与高阶界面追踪方法[44,45]耦合, 针对动边界不可压流体提出一个时空一致四阶精度的投影算法.