1. 引言
流体、固体和气体混合物在多孔介质中的流动发生在各种物理、生物和工业过程中。因此,了解和准确预测多孔介质中的多相多组分流动对许多科学和工程应用都具有重大意义。相场方法是建模和模拟多相流问题的常用工具,相关概述见[1]-[4]。Stokes-Cahn-Hilliard (SCH)模型[5]由Cahn-Hilliard方程和不可压缩的Stokes方程构成,是相场模型中的一种,该模型描述了两种不可压缩不相容流体的混合物的相场演化过程。但是想要建立有效的数值格式来求解该耦合相场模型仍然面临刚性大和耦合项的问题。凸分裂方法和稳定线性隐式方法[6]是构造无条件能量稳定格式的两种常用方法。Eyre [7]推广的凸分裂格式是一种能保持能量耗散定律的数值格式。该格式隐式地处理化学势的凸部分和凹部分,并建立了唯一可解的和无条件能量稳定的格式。Kim等[8]提出了具有对数自由能的Cahn-Hilliard方程的非线性凸分裂傅里叶谱格式,这是对多项式自由能能量泛函凸分裂思想的适当推广。不幸的是,凸分裂方法通常会导致非线性格式。同时,如何将算法推广到更高阶仍是一个问题。
谱延迟校正(SDC)方法是一种具有良好的稳定性和高精度的高阶数值方法,它在2000年由Dutt等人[9]首次提出。然而,SDC方法由于本身的数值积分节点和迭代校正次数导致了较高的计算代价。为了降低计算成本,Minion [10]提出了一种半隐式含刚性和非刚性的常微分方程的谱延迟校正方法(SISDC),该方法对非刚性项显式处理,刚性项隐式处理。在这个半隐式框架内,利用一阶欧拉法求解修正方程。假设数值积分是精确的,那么修正方程每迭代一次,数值解的精度就会提高一阶。之后,为了进一步提高精度和迭代速度,郭瑞晗[11]开发了一类基于二阶时间积分法的半隐式SDC方法,每增加一次迭代,精度就会提高两阶。这为更快地构建高阶的数值方案提供了一种方法。
Parareal方法作为时间并行计算领域[12]的重要突破,自2001年由Lions等人提出以来,受到了学术界和工业界的广泛关注。该方法巧妙地将时间区间剖分为若干个子区间,然后利用多重处理器,在每个时间子区间上并行求解,是一种在时间方向上并行计算常微分方程或时间离散的偏微分方程数值解的迭代方法。这种方法也被称作多重射击法,或者时间多重网格法,Gander等人[13]曾针对该方法展开过探讨。自从Parareal方法问世,其再度激发了学界对于构建时间并行方法的研究热情[14]-[16]。在此背景下,一系列更适配高性能并行计算机的数值算法相继涌现并不断发展,进而在实际应用中诸如航空航天领域,加快了飞行器的设计和优化进程,降低研发成本等。此外,文献[17] [18]中提出了不同的改进算法来提高算法收敛阶。特别地,由于Parareal方法和SDC方法都是预测校正方法,Minion等人[19]将两者结合起来。在文献[20]中给出该混合算法的详细分析,该融合算法的优势主要体现在两个方面:首先,将时间并行的Parareal算法与高阶SDC算法相结合,可以有效地平摊SDC算法在每个时间步上较高的计算成本;另一方面,相较于其它高阶算法,例如高阶龙格库塔方法等,选取高阶SDC算法作为Parareal算法中的高阶格式可以利用低阶数值方法迭代求解得到高阶精度,减少了Parareal算法中每次迭代的计算成本,提高了并行效率。因此,在本文中,我们基于谱延迟校正方法和时间并行Parareal算法,提出了SCH模型的二阶时间并行算法,该算法在提高计算效率和精度的同时,保证离散算法的稳定性。
本文的主要内容安排如下。在第2节中,首先介绍了SCH模型和Parareal时间并行方法。然后给出求解SCH系统的二阶SDC解耦算法,然后基于SDC算法和Parareal算法构造了SCH模型的二阶时间并行解耦算法。在第3节中,通过数值示例来验证了二阶时间并行解耦算法的准确性、稳定性和高效性。第4节做出总结。
2. 模型与算法
2.1. Stokes-Cahn-Hilliard模型
两种不可压缩不相容流体的混合物的相场演化模型是由在时间区域
和有界的Lipschitz空间域
的Stokes-Cahn-Hilliard方程所描述的:
(1)
其中,
是与松弛时间尺度相关的迁移率常数,
是粘度系数,
与表面张力相对应,
是速度场,
是修正压力,
是化学势。相场函数
起着观察微观浓度的作用。比如在纯流体的区域内,相场函数
可以达到数值−1和1,而在扩散界面内,
。对于非线性项
,其中
表示双阱势能,用于惩罚偏离物理约束
的行为。方程(1)的前两项是Cahn-Hilliard方程,
项模拟平流效应。方程(1)的后两项是不可压缩的Stokes方程,其中的非线性项
模拟了表面张力效应。
下面将讨论模型(1)的边界条件和初始条件,我们假设
(2)
和
(3)
此外,若是假设该系统除重力外没有其他外力,则Stokes-Cahn-Hilliard方程满足以下能量定律:
(4)
2.2. 时间并行Parareal算法
基于Parareal算法的理念,当时间区间
被分割为
个互不重叠的子区间时,每个子区间将被分配给不同的处理器。为简化表述,我们将这
个处理器记为
。在Parareal时间并行算法[20]里,会用到两个数值逼近算法,分别记为传播函数
与
。为确保算法在并行计算时具备高效性,
的计算成本必须低于
。另外,在时间区间
内,若以
时刻的
作为初始值,通过
和
计算得到
时刻的数值解,则分别用
与
来表示。
在Parareal方法中,
常被用来串行计算所有节点的临时逼近解,即
只要每个处理器
获得初始值
和临时逼近解
,它们就能并行计算出更精确的近似解
。然后使用如下的校正步串行得到最终的逼近解
(5)
2.3. SCH方程的二阶算法
在本节中,我们首先给出了SCH方程的二阶解耦SDC算法。然后,基于Parareal并行算法,建立了一种求解SCH系统的二阶解耦时间并行算法。首先我们通过添加稳定项(7)得到SCH方程的一阶解耦算法。然后在一阶解耦算法的基础上通过谱延迟校正方法构造二阶解耦SDC算法。
算法1. (SCH方程的二阶SDC解耦算法)
1) (一阶解耦算法)给定初值
,求解
满足
(6)
(7)
(8)
(9)
2) (二阶解耦SDC算法)由一阶解耦算法求得
,求解
满足
(10)
(11)
(12)
为了进一步提高数值求解SCH系统的计算效率,我们将基于SDC方法和并行算法,提出一种具有时间二阶精度且能量稳定的时间并行算法。该算法是对上述解耦算法的进一步优化,相较于一般的SDC算法,降低了计算规模,大大提高了计算效率。在本文中,我们采用一阶解耦算法作为传播函数
,并采用类似(10)~(12)式的SDC方法作为传播函数
,在确保精度和能量稳定性的前提下,利用时间步并行技巧提高了计算效率。
算法2. (SCH方程的二阶解耦并行算法)
1) 串行求解
,
,即在时间方向依次计算(10)式得到
。
2) 利用二阶解耦SDC算法的校正步并行求解
,
,以第
个处理器
为例:求解
满足
(13)
(14)
(15)
(16)
3) 串行求解
,
,即在时间方向依次求解
,满足
(17)
(18)
(19)
(20)
(21)
(22)
随后将介绍数值实验,以证明二阶解耦并行算法算法在求解SCH方程时确实具有高阶精确性、能量稳定性和高效性。
3. 数值实验
在这一部分,我们将借助数值实验来检验针对SCH方程的二阶时间并行解耦算法的有效性。所有数值运算均基于MATLAB软件开展。就空间离散化而言,对于Stokes方程,我们运用Taylor-Hood (P2-P1)有限元进行近似处理;对于Cahn-Hillard方程,则采用二次多项式有限元(P2)来加以近似。
3.1. 收敛性实验
我们通过数值实验验证算法2的时间收敛阶。我们考虑在计算区域为
,最终时间为
,物理参数为
。初始条件为
在文献[21]中,给出了以下计算收敛阶的方法:假定
定义
Table 1. The temporal convergence order of Algorithm 2 with the fixed grid size
, the final moment
and different time steps
表1. 算法2的时间收敛阶,其中固定网格大小为
,最终时刻
,并选取不同的时间步长
|
|
order |
|
order |
|
order |
|
order |
T/80 |
2.9932e−05 |
1.9036 |
4.8890e−04 |
1.8604 |
3.0472e−05 |
1.9030 |
4.4057e−04 |
1.8399 |
T/160 |
7.9998e−06 |
1.9518 |
1.3464e−04 |
1.9275 |
8.1478e−06 |
1.9518 |
1.2307e−04 |
1.9175 |
T/320 |
2.0678e−06 |
1.9760 |
3.5393e−05 |
1.9631 |
2.1062e−06 |
1.9760 |
3.2578e−05 |
1.9581 |
T/640 |
5.2565e−07 |
|
9.0774e−06 |
|
5.3539e−07 |
|
8.3846e−06 |
|
|
|
order |
|
order |
|
order |
|
|
T/80 |
7.0617e−04 |
1.8723 |
1.4863e−02 |
1.8732 |
1.8003e−04 |
1.8902 |
|
|
T/160 |
1.9288e−04 |
1.9349 |
4.0571e−03 |
1.9357 |
4.8567e−05 |
1.9436 |
|
|
T/320 |
5.0447e−05 |
1.9671 |
1.0605e−03 |
1.9676 |
1.2626e−05 |
1.9715 |
|
|
T/640 |
1.2903e−05 |
|
2.7114e−04 |
|
3.2194e−06 |
|
|
|
这里,
可以为
、
或
,且
。如果
,
,则表明
误差的空间收敛阶和时间收敛阶分别为
和
。同样,通过计算
和
可以得到
误差的空间和
时间收敛阶。为方便记述,我们将定义
和
。
表1列出了算法2的时间收敛阶。我们固定空间步长为
,并选择不同的时间步长
。表1中的结果显示,对于
和
,算法2的时间收敛阶在
范数下和
范数下均达到了二阶精度。
3.2. 稳定性实验
在这一部分中,我们将验证算法2的能量稳定性,首先,先定义离散时间
的离散能量函数
在本实验中,取空间步长
,其他参数与上述收敛性实验中的参数相同。图1给出了算法2在
三个时间步长下的能量变化情况。图1显示,算法2在不同的时间步长下,离散能量函数
随时间是递减的。因此,我们可以得到,算法2具有良好的稳定性。
(A)
(B)
(C)
Figure 1. Evolution of discrete energy
for Algorithm 2 are shown at
图1. 算法2在
时,离散能量
变化情况
3.3. 运行时间比较
为了验证算法2和算法3的并行有效性,我们比较了时间并行算法与串行二阶SDC算法,即算法1的计算时间。在本实验中,计算区域和参数选择与实验3.1中相同。表2和表3中的数值结果表明,算法2和3的运算时间相近,且与串行算法1相比,都提升了运行效率,但通过实验2表明了算法2的稳定性更好。因此,在同等条件下,算法2在稳定性和计算效率均具有优势。
Table 2. The CPU time of the time-parallel and serial decoupling schemes with the fixed mesh
表2. 时间并行方案和串行解耦方案在固定网格
时的CPU运行时间
数值算法 |
CPU (s) |
|
|
|
|
二阶解耦算法 |
11.598 |
23.5438 |
45.2505 |
89.1838 |
二阶解耦并行算法 |
6.2058 |
10.9925 |
22.3059 |
44.272 |
加速比 |
1.9 |
2.1 |
2.0 |
2.0 |
Table 3. The CPU time of the time-parallel and serial decoupling schemes with the fixed mesh
表3. 时间并行方案和串行解耦方案在固定网格
时的CPU运行时间
数值算法 |
CPU (s) |
|
|
|
|
二阶解耦算法 |
62.912 |
121.499 |
229.6978 |
461.2383 |
二阶解耦并行算法 |
28.3711 |
56.9073 |
114.9398 |
234.079 |
加速比 |
2.2 |
2.1 |
2.0 |
2.0 |
4. 结论
为提高数值求解具有匹配密度的Stokes-Cahn-Hilliard相场模型的计算效率,本文基于半隐的SDC算法和Parareal算法构造了一个具有时间二阶精度的时间并行算法。我们在数值上验证了算法的收敛性和稳定性,同时通过不同算法的比较说明了我们的时间并行算法的高效性。