承接上一篇。第 4 章把 Stokes 问题化为鞍点形式的变分问题,并落到代数系统 (4.10) 上;本篇继续第 5 章(完整 Navier–Stokes 方程的有限元处理)、第 6 章(鞍点系统的迭代解法)与附录 A(稀疏矩阵)。行文中穿插了我复习时产生的若干疑问,以及澄清的结果——其中有几处是我原先的理解出了偏差,一并记录下来。
5 Navier–Stokes 方程的有限元方法
第 4 章的变分理论是针对 Stokes 问题发展的,它是丢弃对流加速度之后所得的线性内核。然而真实流动携带惯性,而恰恰是对流项使流体力学既丰富又困难:它令方程非线性化,驱动向湍流的转捩,并且——一旦离散——摧毁了使 Stokes 系统如此易于处理的对称性。本章把有限元框架推广到完整的不可压缩 Navier–Stokes 方程:写出弱形式,记录关于存在唯一性的已知结论,讨论保持离散稳定的有限元空间,并且——对后文而言最为重要——说明非线性如何通过一列线性问题得到消解。这些线性问题中的每一个都是第 4 章那种鞍点系统,只是此时一般不再对称,其高效求解正是第 6 章的主题。
5.1 方程及其弱形式
在定常不可压缩情形下,把第 2 章的动量平衡中的物质导数展开,得
与 Stokes 问题 (4.2) 唯一的——但具有决定意义的——差别,是对流项
,它关于未知速度是二次的。
像第 4 章那样作检验并加入对流贡献,弱问题除了 (4.3) 的粘性形式
与约束形式
之外,还要用到三线性形式
,
定义 5.1(弱 Navier–Stokes 问题)
求 ,使得
对所有,对所有
支配分析的是
的两条性质。由 Hölder 不等式与 Sobolev 嵌入
(对
成立,故在
中可用),该形式有界,
,
常数
只依赖于
与
。此外,对无散度的对流场,分部积分给出反对称性
只要,特别地
恒等式
是一条乔装的离散能量平衡:它表明对流输运动量而不创造或销毁动能,这对连续问题的先验估计与离散的稳定性都不可或缺。由于有限元速度未必精确无散度,人们常把
换成它的反对称部分
,它恒满足
。
5.2 存在性与唯一性
非线性改变了适定性理论的性质。Stokes 问题对任意数据都唯一可解(定理 4.5),而 Navier–Stokes 问题只保证至少有一个解;唯一性则要求数据相对于粘性足够小。
定理 5.2(存在性与条件唯一性)
设 为有界 Lipschitz 域, 。则弱 Navier–Stokes 问题 (5.3) 至少有一个解 。若数据还满足小性条件
, 其中 是 的强制常数、 是三线性形式的范数 (5.4),则解唯一。
存在性由 Galerkin 论证配合 Brouwer 不动点定理给出,唯一性由依赖反对称性 (5.5) 的压缩估计给出。引入 Reynolds 数
(
为运动粘度,
为特征速度与长度),条件 (5.6) 本质上就是关于
的小性条件:低 Reynolds 数下流动唯一,且通常是定常层流;随着
增大,解可能丧失唯一性,最终丧失定常性——这正映照着通向湍流的物理路径,也是高 Reynolds 数计算中数值困难的解析投影。
5.3 inf–sup 稳定单元
离散从第 4 章继承了这样一条要求:速度/压强对
必须关于
一致地满足假设 4.8 的离散 inf–sup 条件。对流并不放松这一要求——它进一步约束速度空间,而压强稳定性仍由 inf–sup 支配。两族稳定单元贯穿全书:
- Taylor–Hood 族:速度用
次、压强用
次连续分片多项式(
),最低阶成员是三角形上的
,或四边形上的
。
- MINI 单元:连续
速度用一个内部泡函数加以富化,配以连续
压强;泡函数恰好提供了在最低阶满足 inf–sup 所需的那些速度自由度。
两种情形下速度空间都比压强空间"更富",这正是离散散度得以满射的原因。相反,等阶插值(如
)违反该条件并容许虚假压强模态——即第 6 章将从代数上分析的棋盘格不稳定性——除非加以稳定化(5.5 节)。
5.4 线性化:Picard 与 Newton 迭代
(5.3) 的离散对应物是一个非线性代数方程组,需迭代求解。两种标准线性化都把每一步化为 Oseen 型线性问题——即围绕一个已知速度场作对流增广的 Stokes 问题。
Picard(Oseen)迭代。 把对流冻结在当前迭代
上,求解
:
,
固定后问题是线性的。Picard 迭代全局收敛但只是线性收敛,且其压缩因子随 Reynolds 数增大而恶化;它稳健,是远离解时的首选。
Newton 迭代。 把映射
在
处沿方向
线性化,产生两项
。于是 Newton 步对增量
求解
,,
其中
是当前迭代的残量。Newton 二次收敛但只是局部收敛,故实践中常先作几步 Picard 再切换到 Newton。
我的疑问 1:Gâteaux 导数里的 到底是什么? 习题纸上把 Newton 线性化写成
这里的 是不是"更新 所朝的方向"?
正是如此。
(对所有检验函数
成立)是定常 Navier–Stokes 的弱非线性残量形式,而 Newton 法求解
需要
在当前迭代
处的 Fréchet(Gâteaux)导数。按定义,它就是沿方向
的方向导数:把当前迭代沿
扰动一个小量
,代入
,对
求导,再在
处取值。
因此三组变量的角色是:
-
:当前的速度/压强迭代;
-
:每步待求的 Newton 增量,即上文 (5.8) 中的
;
-
:一如既往的检验函数。
Newton 步即求解线性问题
(对所有
),再更新
。之所以说这是"线性化",正是因为该问题关于未知的
是线性的。
推导中出现的两个线性化对流项
,恰是三线性形式
的线性化:由于
同时出现在
的前两个变量位置上,对
求导时每一处各贡献一项。这也解释了 Newton 与 Picard 的分野:Picard 只冻结一个位置上的
(给出单独一项
),Newton 则对两处出现同时求导并保留两项——多出来的那一项换来的是局部二次收敛,而非 Picard 的线性收敛。
在两种情形下,每步所解线性问题的代数形式都是
,,
其中
是第 4 章那个对称的(矢量 Laplace)扩散矩阵,
是围绕当前速度
由
装配出的对流矩阵(对 Newton 而言,
中还多一个由
来的类反应项)。由于对流是一阶、非自伴算子,Oseen 块
不对称——与 (4.10) 中对称的 Stokes 块形成对照。于是 (5.9) 是一个非对称鞍点系统。第 6 章为对称 Stokes 系统发展的块预条件子可以推广到它,只是 Krylov 方法要由 MINRES 换成 GMRES。
5.5 对流主导流动的稳定化
标准 Galerkin 离散只在扩散控制对流时才准确。当网格 Péclet 数(单元 Reynolds 数)
超过 1 时——也就是在可负担的网格上作对流主导计算时——Galerkin 速度会发展出非物理振荡,与标量对流–扩散方程的情形完全一致。稳定化格式通过添加依赖网格的加权残量项来治愈它:这些项相容(对精确解为零),却能恢复对对流导数的控制。
流线迎风 Petrov–Galerkin(SUPG) 方法在动量方程上增添
,
即用流线导数
去检验强残量,单元参数
。因为被加权的只是残量,精确解不受影响,最优精度得以保留,而添加项沿流线方向注入了恰好足够的数值扩散来压制振荡。相关的 Galerkin/最小二乘法与基于残量的变分多尺度法遵循同一原则。
另有两种稳定化常与 SUPG 联用:PSPG 用压强梯度去加权残量,从而彻底绕开 inf–sup 条件,容许方便的等阶插值——它正是第 6 章中代数稳定化
–
对的连续对应物;grad-div 稳定化添加
以改善质量守恒与压强稳健性。对线性代数而言,稳定化把 (5.9) 中原本为零的压强–压强块填成一个对称半正定矩阵
,从而给出下一章处理的一般形式 (6.1),而并不改变所解系统的鞍点性质。
5.6 非定常流动的时间离散
对含时流动,动量方程保留局部加速度
。先作空间离散——线方法——把弱问题化为关于系数矢量的微分代数方程组
,,
其中
是速度质量矩阵。不可压缩约束不带时间导数,故 (5.11) 是指标为 2 的微分代数系统,压强扮演把速度约束在无散度流形上的代数乘子。
隐式时间积分器——
格式(后向 Euler、Crank–Nicolson)或后向差分公式——在新时间层上处理刚性的粘性项与约束项。于是一步需要求解
,
其结构与 (5.9) 相同,只是速度块被
平移。这一平移使该块更接近对角占优、条件数更好,且
越小越好——正如第 6 章所示,这对迭代求解器及其预条件子是有利的。对流可以隐式处理(每步内作 Picard 或 Newton 求解),也可以在半隐式(IMEX)格式中显式处理,以对
的限制换取免去非线性求解。
求解完全耦合系统 (5.12) 之外的另一条路是投影(压强修正)方法:把每个时间步拆成速度更新,再跟一次恢复不可压缩性的压强 Poisson 求解。它以一列更简单的椭圆求解替换耦合的鞍点求解,在大规模非定常计算中被广泛使用。
5.7 小结
Navier–Stokes 方程的有限元处理建立在与 Stokes 问题相同的变分基础上,由三线性对流形式加以扩展,并受同一 inf–sup 条件约束。其特征性的困难是非线性,它在定常计算中由 Picard 或 Newton 迭代、在非定常计算中由隐式时间推进,消解为一列线性鞍点系统 (5.9)、(5.12)。这些系统一般非对称,且在细网格上规模极大;它们的高效迭代求解因此是任何实用 Navier–Stokes 求解器的关键所在。
6 鞍点系统的迭代解法
6.1 动机与问题设定
Stokes 方程——以及更一般地,任何以压强作为施行不可压缩约束的 Lagrange 乘子的流动模型——的有限元离散,导致具有特征性
块结构的大型稀疏线性系统。稀疏性是有限元基函数局部支集的直接后果,使每个未知量只与少数几个邻居耦合。记
为离散速度自由度矢量、
为离散压强自由度矢量,这类系统取如下形式:
,
其中
,
,
,且通常
。
假设 6.1
- 对称正定(SPD);
- 具有满行秩,即 ;
- 对称半正定(SPSD);对未稳定化的 Galerkin 离散 ,稳定化离散则给出(小的) 。
在假设 6.1 之下,矩阵
对称但不定:它同时具有正、负特征值(见下面的定理 6.3)。这一不定性是大部分数值困难的根源,并且排除了共轭梯度法的直接应用——后者要求系统是定的。
"鞍点系统"之名反映了 (6.1) 的变分来源。当
时,解
是 Lagrange 泛函
的唯一驻点,它对应于等式约束二次极小化问题
(6.3) 的一阶最优性(KKT)条件恰是
时的 (6.1)。
关于原变量
是极小点、关于乘子
是极大点,故
在此有一个鞍点,压强
即施行离散不可压缩约束
的 Lagrange 乘子。
6.2 代数结构与 Schur 补
由于
是 SPD,特别地它可逆,于是速度未知量可以从 (6.1) 中消去。由第一块行解出
,
代入第二块行
,得到只关于压强的约化系统
,
矩阵
就是
在
中的(负)Schur 补。它把速度与压强之间的全部耦合浓缩进一个
矩阵,在分析与预条件子构造中都居于核心地位。
引理 6.2(Schur 补的性质)
在假设 6.1 之下,Schur 补 对称正定。
证明。 对称性由
与
的对称性立得。为证正定性,取
,
,则
,
因为
是 SPD、
是 SPSD。取等号要求两项同时为零;特别地
迫使
(因
为 SPD)。而
满行秩,故
单射,
蕴含
,矛盾。
定理 6.3(块分解与惯性)
在假设 6.1 之下,系统矩阵允许块 分解
因此 非奇异,系统 (6.1) 有唯一解;并且 恰有 个正特征值与 个负特征值。
我的疑问 2:Schur 补是"猜出" 再反解出来的吗? 我最初的理解是:先设 ,其中 、 ,然后解出 ,再据此得到 Schur 补 ;最后用惯性定理判断 的谱性质。
大方向对,但推导的顺序恰好相反,而且有两处需要更正。
第一,
并不是从假设的分解中"反解"出来的,而是直截了当消元的结果:由 (6.4) 解出
、代回第二块行,剩下的关于
的矩阵就是
。分解 (6.6) 是事后对这一消元过程的识别;
的非对角块
是把块乘法展开、与
的各块相比对而读出的(验证式
),而非独立待解的未知量。
第二,我漏掉了使惯性论证得以成立的关键一环:引理 6.2(
为 SPD)。没有它,
的惯性无从谈起。
第三,是 Sylvester 惯性律(Sylvester’s law of inertia),不是我写的"Silver"。它断言:两个实对称矩阵若合同(
,
非奇异),则它们有相同的惯性
——合同可以改变特征值本身,但不改变它们的符号。
于是完整链条是:
中
为 SPD(贡献
个正特征值)、
为负定(贡献
个负特征值),故
;而
是单位下三角阵,
非奇异,故
与
合同,由 Sylvester 律
:
对称不定,无零特征值——这也再度确认了非奇异性,而且无需显式形成
(形成
或
一般会摧毁稀疏性)。
6.3 可解性与离散 inf–sup 条件
定理 6.3 保证了固定离散问题的可解性。但在有限元语境下,人们求解的是由网格尺度
标记的一整族系统,真正的问题是解算子在
时是否保持有界。这一稳健性由离散 inf–sup(LBB)条件支配。
定义 6.4(离散 inf–sup 条件)
一族速度/压强有限元对满足常数为 的离散 inf–sup 条件,若
这里的两个范数是相应有限元函数的自然能量范数:
与
分别是
与
内积在两组基下的 Gram 矩阵,故
以
能量范数度量速度,
以
范数度量压强。
我的疑问 3: 为什么叫"能量范数"?它是 Frobenius 范数的别名吗?
不是,两者毫无关系。
Frobenius 范数是矩阵上的范数:
,即把矩阵元当作一个长矢量取 Euclid 范数,纯属记账,与任何物理能量无关。
能量范数则是**矢量(或函数)**上的范数,由一个 SPD 双线性形式
(连续情形下为
)诱导:
它之所以是真正的范数,正是因为
是 SPD:正定性给出
,双线性与对称性经由
-内积
上的 Cauchy–Schwarz 给出三角不等式。
"能量"之名是字面意义上的物理陈述而非记号巧合:对本课程的 Stokes/弹性型问题,
恰是(两倍的)粘性耗散率;在结构力学的历史源头处,线弹性问题的
就是变形
中储存的应变能的两倍。离散地,由 Korn 不等式
,故
与
半范数等价。
这也解释了它在第 6 章反复出现的原因:CG 所极小化的正是能量范数(见 6.5 节),这与 Céa 引理在上一层的最佳逼近性质是同一个变分原理。
6.3.1 三种代表性单元对
离散 inf–sup 常数
完全由速度与压强有限元空间的选取决定。在四边形网格上写
表示每个坐标方向上
次的连续分片(映射)多项式空间,三种定性不同的结局如下。
(i) 不稳定的等阶对
–
。 对速度各分量与压强使用同一连续双线性空间,是最自然、也最危险的选择。这一对直接违反 inf–sup 条件:存在非零压强矢量
——即虚假压强模态——它对每一个离散速度都是"不可见的",
,
在均匀网格上,典型的这类模态就是棋盘格模态:由于
压强是节点型(连续)的,它对网格顶点
赋以交替值
。
我的思路是:在参考单元 上研究 的基,发现棋盘格模态可由基的线性组合表示;再回忆 (对所有 ),以及 作为散度积分的定义,通过算积分即可验证 。
网格/基的策略是对的,但记号
不成立——那不是一个合法的对象(
是列矢量,
也是,两者不能相乘)。正确的写法是转置:
,
最后一步用的是 (4.9) 中
的定义
。于是
对所有,
这才是要逐单元验证的对象。把
展开为棋盘格模态、
展开为
速度基,在每个单元上算
:
的
节点值贡献在相邻单元之间成对相消——分片双线性的散度分辨不出波长为
的振荡,这就是"棋盘格模态与任何离散速度都不产生散度配对"的具体含义。
结论必须显式写出(这是我原先漏掉的):既然对非零的
有
,则
不满行秩,假设 6.1(2) 被违反;
奇异(因
,即
落在
的核里),等价地离散 inf–sup 常数
。这与引理 6.2 的证明严丝合缝:那里正是
(
)破坏了
的正定性。
参考单元 上的 节点基(双线性,每顶点一个,满足 Lagrange 性质 )为
,,,, 分别对应节点 ,张成 。由于节点基对本就属于该空间的函数插值即精确复现,而 落在子空间 中,故其系数就是各节点值:
直接展开可验证:常数项靠单位分解 复原, 项靠 , 项靠 。单位分解也正是"无害的常压强模态"总能被表示的原因——它由 上的零均值约束固定,与棋盘格模态那种病态虚假模态性质不同。
(ii) 稳定的 Taylor–Hood 对
–
。 把速度次数提高一阶即可治愈不稳定性;在形状正则的网格族上,它满足 (6.7) 且常数
与
无关(
皆然)。标准途径是 Fortin 判据,它把离散 inf–sup 条件的验证归结为构造单一的插值型算子。
引理 6.6(Fortin 判据)
设连续速度空间为 ,且散度的连续 inf–sup 条件以常数 成立。若存在与 无关的线性 Fortin 算子 与常数 ,使得对所有
对所有, , 则离散 inf–sup 条件 (6.7) 以 成立。
(iii) 稳定化的
–
。 方便的等阶对可以由稳定化拯救:添加一个控制虚假模态、而对光滑解保持相容的压强相关项。经典例子是 Brezzi–Pitkäranta 稳定化,它在第二块行上增添双线性形式
,,
在矩阵形式下,(6.13) 恰好贡献 (6.1) 中那个对称半正定块
,使
的
元变为
。
从"
正定故非奇异"这一层说,事情就完结了;但值得再补两句,说明为什么恰好治得住棋盘格。虚假模态满足
,故
——
正落在
的核里,这才是
单独奇异的方向;而稳定化项
对逐节点振荡的棋盘格模态取严格正值。也就是说,
恰在
消失的那个方向上为正,这才把
从奇异推成 SPD,而不是笼统地"加了个正则项"。
注 6.7(稳定化的优化解释)
稳定化系统是修正鞍点泛函
的驻点条件。消去 后,对 的极大化变成
, 故稳定化不过是把 Schur 补 换成 :这是对偶(压强)问题的 Tikhonov 正则化。虚假模态处 使对偶目标沿 方向"平坦",压强因而只被确定到相差虚假振荡;加上 后目标严格凹,压强唯一确定。
6.4 谱性质
迭代方法的收敛速率通常由所作用矩阵的谱——或预条件后算子的谱——支配。对未预条件的鞍点矩阵(
),命题 6.8 给出:设
为
的极端特征值、
为
的极端奇异值(
因
满行秩),则
的每个正特征值
与负特征值
满足
,
两个区间由原点分开:正特征值以
为下界,负特征值以一个严格负的数为上界——之所以严格负,正是因为
,即
满行秩(离散 inf–sup 性质)。对未预条件的 Stokes 矩阵,这两个区间在网格加密时会展开(
),谱分布愈发恶劣,迭代步数随网格加密而增长——这使 6.6 节的有效预条件不可或缺。
注 6.9(inf–sup 条件与 Schur 补的条件数)
命题 6.8 中一切都在 Euclid 内积下度量,其中的量都依赖于网格,没有一个关于 一致。稳健的陈述要在自然范数下度量:速度用能量范数 、压强用 范数 。此时支配可解性的对象是质量矩阵预条件的 Schur 补 ,而定义 6.4 的离散 inf–sup 常数恰是它的最小特征值:
,, 从而 与 无关。换言之: 自身的特征值随网格漂移(其标度如同质量矩阵 ),但 的特征值不漂移;inf–sup 条件恰恰断言下端 在 时不趋于 0。
6.5 Krylov 子空间方法
在三维中,对
作稀疏
直接分解会因填充而在内存与运算量上都变得不可行。大规模问题因此转向 Krylov 子空间方法,它们只通过矩阵–矢量乘积访问
,从而保持稀疏性(稀疏存储格式与该乘积内核见附录 A)。
6.5.1 投影方法与 Krylov 子空间
本节所有方法共享一个原则。求解
的投影方法从
维仿射搜索空间
中抽取近似
,要求残量正交于
维检验空间
:
求,使得
当
时投影正交(Galerkin 条件),否则斜交(Petrov–Galerkin 条件)。
定义 6.10(Krylov 子空间)
由矩阵 与矢量 生成的第 个 Krylov 子空间为
这些空间是嵌套的,并带有解释方法及其收敛性的多项式结构:每个
形如
(
),故残量为
,,
于是 Krylov 方法隐式地构造了一个以
归一化的残量多项式,其收敛性取决于这样的多项式在
的谱上能被压到多小。
注 6.11(一串变分表述的级联)
投影条件 (6.23) 正是支撑整个离散的那条原则,只是又下沉了一层。连续问题以弱形式提出, (对所有 );有限元法把它限制到子空间, (对所有 ),即 Galerkin 正交性 ,对对称的 而言这刻画了 是 在能量范数下的最佳逼近(Céa 引理)。Krylov 方法在代数系统 上重复了完全相同的构造。整条数值管线因此是同一个变分原理在依次更小的空间 上的级联。
6.5.2 三种方法
- 共轭梯度(CG,用于 SPD 块)。 取
。Galerkin 条件说残量正交于
,等价地误差**
-正交**于搜索空间;对 SPD 的
,这就是能量范数下的最佳逼近
,与极小化二次能量
等价。优点:能量范数下最优、存储恒定、收敛只由
支配。缺点:只适用于 SPD 系统,在不定的
上失效。因此 CG 在本章只用于 SPD 子问题:速度块
、Schur 补
,以及 Uzawa 与块预条件迭代的内层求解。
- 极小残量(MINRES,用于对称不定系统)。
对称但不定,能量范数(以及 CG)不可用。改取
,即极小化
。对称性使
三对角,其 QR 因子经短递推更新,故每步代价恒定。预条件子
必须 SPD 才能保持对称性,此时 MINRES 在
范数下极小化残量,收敛由
的特征值支配:若它们落在
中(
),则
步后残量降低约
- 广义极小残量(GMRES,用于非对称预条件)。 非对称预条件子使
非对称,
退化为满上 Hessenberg 阵,Lanczos 缩短失效。同样的残量极小化定义了 GMRES。缺点是完整 Arnoldi 递推使工作量与存储随迭代指标线性增长,实践中须重启(GMRES(
))。
6.5.3 CG 的具体形式
我的疑问 5:CG 中 的更新规则是怎么导出的?什么叫 -共轭?
定义。 对 SPD 矩阵
,两个非零矢量
称为
-共轭(或
-正交),若
,即它们在
-内积
下正交——正是上文诱导能量范数的那个内积。一组方向
互相
-共轭,若
(
)。
为什么要这个性质。 CG 在
上极小化能量范数误差。若搜索方向
张成
且互相
-共轭,则在
上的极小化解耦为沿各个
的
个独立一维极小化——一旦沿某个方向走过,就再也不必回头重新优化。这一解耦正是 CG 能塌缩成短而廉价的递推、而不必像完整 GMRES/Arnoldi 那样作不断增长的正交化的全部原因。
导出
。 把新方向取为残量被前一方向修正的形式
,并要求
与
共轭,即
:
再用递推中已有的两条事实化简。由
得
,故
,
最后一步用了残量互相正交(这是 Galerkin 条件的推论,与共轭性一同归纳地证明)。又由步长公式
得
,代入即得
,
恰好抵消,且不需要任何额外的矩阵–矢量乘积。
一个值得能答上来的细节: 为什么只让
与
共轭,就能保证整族方向互相共轭?这正是 Krylov 子空间结构发挥作用之处:归纳地
,故
;而
(残量对迄今整个搜索空间的 Galerkin 正交性),于是自动有
对所有
成立。也就是说,递推中只对
施加共轭性,就白得了对所有先前方向的共轭性——这正是把一般的(稠密、
存储的)Lanczos 型 Galerkin 投影,变成 CG 的两项、
存储短递推的机制。
6.6 块预条件子
块分解 (6.6) 提示了由对角块
与
的(近似)构造预条件子。先分析理想版本,其中
与
被精确使用;它们给出可观的特征值聚集,是实用变体的理论蓝本。
定理 6.12(Murphy–Golub–Wathen,块对角情形)
设 且假设 6.1 成立。对块对角预条件子 ,预条件矩阵 可对角化,且恰有三个相异特征值
,,, 其中 1 的重数为 ,两个黄金分割值的重数各为 。因此极小残量型 Krylov 方法在精确算术下至多 3 步终止。
证明的要点是:
的情形给出
(对应
中的
维解空间);
时消去
并利用
,化为标量关系
,即
,其根正是黄金分割值。极小多项式次数为 3,故 3 步终止。
保留非对角耦合则给出块上三角预条件子
。它非对称,须与 GMRES 联用。此时
,只有单一特征值 1 且
,故 GMRES 至多 2 步终止(定理 6.13)。
实用版本。 理想预条件子不能直接使用:每次作用都要精确求解带
与带稠密
的系统,代价与解原问题相当。实用配方是把
与
换成谱等价且易于作用的近似
与
:
- 近似速度求解
:由于
是离散(矢量)Laplace 算子,单个多重网格 V-循环或代数多重网格(AMG)循环即可给出与
谱等价、常数与网格无关的
,代价线性。
- 近似 Schur 补
:由谱等价性,对 Stokes 问题,压强质量矩阵
(按粘度倒数缩放)是
的网格无关近似;
良态,故几步 Chebyshev 或 Jacobi 扫描——甚至只取其对角——就足以廉价地作用
。
当
与
以网格无关的常数谱等价时,
的特征值仍聚集在远离零的固定区间内,MINRES 界 (6.30) 便预言与
无关的迭代步数。
6.7 Uzawa 方法及其变体
核心思想一句话:Uzawa 就是对 6.2 节的 Schur 补系统作 Richardson 迭代,只是包装得让你从不必显式形成
。
第一步:回忆约化系统。 由 (6.5),消去
后得关于
的
SPD 系统
,其中
(
的 SPD 性由引理 6.2 保证)。
第二步:对该系统作 Richardson 迭代。 求解
的一般定常(Richardson)迭代为
,
其中
为松弛参数。由标准 Richardson 理论,迭代矩阵为
,谱半径小于 1 当且仅当
(
为
的最大特征值)。
第三步:不形成
,改用一次速度求解替代。 关键的观察是
,
因此只要定义
——字面意思就是:把当前压强迭代冻结为已知载荷,解一个 Stokes 型的速度问题——所需残量就只是
,全程不出现
。这就给出
,
结构上,每个 Uzawa 步就是"给定当前压强猜测精确求解速度块,再沿减小散度约束违反量
的方向轻推压强";但把
重新消去后,它与
上的纯 Richardson 在代数上完全等同。最优参数与收敛率随之由同一套 SPD 理论给出:
使谱半径最小,此时渐近收敛因子为
。
实用版本为何不同。 精确版本有两处不足:(i) 每个外迭代都要作一次完整的速度求解
,昂贵;(ii) 收敛随
增大而恶化(网格加密时它通常确实增大)。补救办法与前面"谱等价替身"的思路一致:把精确的
换成廉价近似求解
(例如一个 AMG V-循环),把压强更新用
(例如
上的几步 Chebyshev 扫描)预条件。
算法 5:非精确、预条件的 Uzawa 迭代
输入:初始猜测 ,松弛参数 ,容差
对 :
- (近似速度求解)
- (约束残量)
- (预条件压强更新)
- 若 则终止
采用与 6.6.3 节相同的谱等价构件
,非精确 Uzawa 以与网格无关的速率收敛。密切相关的 Arrow–Hurwicz 方法把内层速度求解换成单步梯度步,以更慢的收敛率换取更快的单步迭代。另一个稳健变体是增广 Lagrange 预条件:把
块换成
,其 grad-div 型项不改变 (6.1) 的解(因解处
),却改善了 Schur 补的近似质量;代价是
更病态、更各向异性,需要专门设计的多重网格。
6.8 应用于 Stokes 系统
对 Stokes 问题,
,块
是按粘度
缩放的离散矢量 Laplace 算子,
是离散散度。决定性的性质是 Schur 补与压强质量矩阵之间的谱等价,对 Stokes 算子它取如下尖锐形式:
,
其中
是定义 6.4 的离散 inf–sup 常数。上界常数为 1,下界为
,对 inf–sup 稳定的单元对(如 Taylor–Hood
–
族)两者都与
无关。这就为选取
作为 Schur 补近似提供了依据。配合矢量 Laplace 算子的多重网格近似
,块对角预条件子
使
的特征值落在端点只依赖于
与多重网格循环质量、而不依赖于
的固定区间内。于是预条件 MINRES 迭代以与网格无关的步数收敛——这正是最优求解器的标志。同样的构件装配成块三角预条件子
并配以 GMRES,常被观察到只需大约一半的迭代步数,与定理 6.12、6.13 的比较相符。
对定常与非定常 Navier–Stokes 方程,同样的结构依然成立,但
块额外含有非对称的对流项。此时
非对称,MINRES 不再适用,Schur 补也不再允许简单的质量矩阵近似 (6.38);专门的近似(如压强对流–扩散 PCD 与最小二乘交换子 LSC 预条件子)才能在该情形下恢复网格稳健的收敛。
6.9 小结
离散 Stokes 方程给出对称不定的鞍点系统 (6.1),其结构由 Schur 补
与块分解 (6.6) 刻画。可解性由假设 6.1 保证,而网格稳健的可解性要求离散 inf–sup 条件,等价地要求
与压强质量矩阵谱等价。高效求解经由 Krylov 方法进行——对称系统用 MINRES,非对称预条件下用 GMRES——并由块预条件子加速,后者由速度块的多重网格近似与 Schur 补的压强质量矩阵近似装配而成。理想版本把谱聚集到几个点上(定理 6.12、6.13),其谱等价的实用对应物继承了与网格无关的收敛性。6.7 节的 Uzawa 家族则基于同样的构件,提供了一个轻量的定常迭代替代方案。
附录 A 稀疏矩阵
A.1 有限元矩阵的稀疏性
每个有限元基函数
的支集都很小,只覆盖与其节点相邻的那些网格单元。因此刚度矩阵元
除非
与
共享某个单元否则为零,装配后矩阵的第
行只有有界个非零元——这个数由局部网格连通性决定,与网格尺度
无关。于是非零元总数线性增长,
,而非关于未知数
二次增长。
后果是决定性的:稠密数组需要
个数——
时在双精度下已是 8 TB——且每次矩阵–矢量乘需
次运算,两者都远不可及。稀疏数据结构只存储、只对非零元运算,把存储与矩阵–矢量乘的代价降到
。这一线性标度正是大规模模拟得以可行的原因,也正是第 6 章那些只通过矩阵–矢量乘接触矩阵的迭代求解器所要利用的。
A.2 存储格式
以小例子说明:
,,
坐标表(COO)。 最简单的格式存三个长度为
的数组——行指标、列指标与数值——使第
个非零元为
。对 (A.1) 逐行列出:
,,
COO 在装配时很方便——单元贡献直接追加、事后求和——但不支持对给定行的快速访问,很少用于算术。
压缩稀疏行(CSR)。 主力格式压缩了行数组:数值与列指标逐行有序存放,另有长度
的行指针数组
,使第
行的元素占据区间
,且
。对 (A.1):
,,
CSR 给出对整行的即时访问,这恰是矩阵–矢量乘所需,因而是迭代求解器事实上的标准。其按列存放的对应物 CSC 则更适合列抽取、转置乘积以及许多稀疏直接分解。
结构化变体。 块 CSR 用小的稠密
块代替标量;取
时它正好匹配第 5 章矢量值离散的节点
速度块,可削减指标开销并改善缓存利用。对称矩阵(如 Stokes 速度块)只需存上(或下)三角,内存减半。ELLPACK 与对角存储则针对结构网格与图形处理器上的规则稀疏模式。
A.3 稀疏矩阵–矢量乘积
CSR 下的乘积
逐行计算:每个
是第
行所存元素与
中相应指标元素的内积。
1 2 3 4 5 6 7
| 输入:A 的 val, col, ptr;矢量 x for i = 0, 1, ..., n-1: s = 0 for k = ptr[i], ..., ptr[i+1]-1: s = s + val[k] * x[col[k]] y[i] = s return y
|
该算法执行
次浮点运算——每个非零元一次乘、一次加——故代价
,关于问题规模线性。然而其性能几乎从不受算术限制:每个矩阵元只被读一次却只参与两次运算,算术强度很低,该内核是访存受限的,速度由内存带宽而非处理器峰值浮点率决定。此外访问
是间接且不规则的,矩阵的模式与未知量的排序会强烈影响缓存行为,因而降带宽重排序与块格式是值得的。
两点与全书其余部分的联系:其一,转置乘积
——鞍点系统 (6.1) 的非对角块
需要它——在 CSR 下没有干净的按行形式(它会向
散射贡献),最好把
存成 CSR,也即把
存成 CSC。其二,由于各行相互独立,该乘积可立即并行化:在共享内存上跨线程或图形处理器通道,以及——配以行(或区域)划分与所需
元素的 halo 交换——跨超级计算机的分布式节点。正是这种按行并行性,使第 6 章的 Krylov 方法能扩展到极大规模问题。
A.4 重排序
未知量的排序不改变数学问题,却对计算有显著影响。对第 6 章提到的直接
分解,糟糕的排序会造成灾难性的填充——消元过程中由零变为非零的元素——而降填充置换(最小度,或三维中的嵌套剖分)能保持因子稀疏,对可行性起决定作用。对迭代求解器虽不形成分解,但降带宽排序(如逆 Cuthill–McKee)能改善矩阵–矢量乘的缓存行为以及不完全分解预条件子的质量。
A.5 软件库
稀疏存储、矩阵–矢量乘、重排序、Krylov 求解器与预条件子,都由若干成熟的库以经过测试且高度优化的形式提供,其中与本书框架最贴合的是 PETSc(Argonne 国家实验室):它提供分布式稀疏矩阵类型(AIJ,即并行 CSR;BAIJ,其面向矢量值问题的块变体)、分布式矢量、Krylov 求解层(KSP,含 CG、MINRES、GMRES 等)与预条件层(PC,从 Jacobi、不完全分解到加性 Schwarz、专为块与鞍点系统构建的 FieldSplit 预条件子,以及到多重网格的接口)。由于 Krylov 方法与预条件子在运行时选取,本书的各种求解器可以无需重新编译地装配、组合与比较。
其他覆盖相近领域的包包括:Trilinos(Sandia,含 Tpetra 稀疏线性代数、Belos Krylov 求解器、MueLu 代数多重网格)、hypre(LLNL,尤以 BoomerAMG 著称)、SuiteSparse(UMFPACK、CHOLMOD、KLU 等稀疏直接求解器)、Eigen(仅头文件的 C++ 模板库,适合串行与中等规模问题),以及厂商稀疏 BLAS 库如 Intel MKL 与 NVIDIA cuSPARSE。更高层的有限元框架——deal.II、FEniCS、Firedrake——从变分描述装配稀疏矩阵,并把线性求解委托给 PETSc 或 Trilinos,使得从第 4 章的弱形式到第 6 章的预条件 Krylov 求解这一整条链路都能在同一环境中完成。