1. 引言
浅水波方程是主要用于描述浅水环境下各类流体活动的一类方程,对于研究潮汐、灌溉和浅水海洋等波动问题有着非常重要的作用。因此,浅水波方程的数值求解方法引起了计算流体力学学者们的重视。
浅水波方程属于非线性双曲守恒律方程,人们对这类方程研究发现:不管给定的初始条件是否光滑,该方程的数值解在某个时刻也会产生间断。这使得数值方法的稳定性结果很难获得。针对这一问题,Lax于1954年首次提出弱解的概念 [1],允许间断解的存在。然而弱解并不满足唯一性,需要借助额外的限制条件在众多弱解中寻找真正具有物理意义的相关解。从物理角度,双曲守恒律方程可以看成粘性趋于零的极限形式;数学上可以证明:满足“粘性消失”的Cauchy问题的解在任何时刻唯一且具有物理意义,这种解称为熵解。在1973年Lax又证明了熵稳定条件与“粘性消失”机制是等价的 [2]。满足熵稳定条件的弱解就是我们要找的熵解,而不满足熵稳定条件的数值解被称为非物理解,在数值模拟结果中往往表现出如“膨胀激波”、“红斑”等非物理现象 [3]。
自von Neumann和Richtmyer起,人们通过引入额外的数值粘性项来满足熵稳定条件,从而避免非物理现象的产生 [4]。1987年Tadmor引入了熵势和熵变量的概念,定义了一类二阶的熵守恒格式 [5],记为EC (Entropy Conservation)格式,其数值通量保持总熵不变。该格式能够捕捉光滑区域的解,但是由于总熵并没有发生耗散,在捕捉间断解时产生振荡现象。2006年,Roe在熵守恒格式的基础上通过添加Roe粘性项来满足熵稳定条件,得出一类熵稳定格式 [6],记为ES (Entropy Stable)格式,该格式在捕捉间断时效果显著。此外,Fjordholm,Mishra及Tadmor在熵守恒通量的基础上引入了一个新的Roe型扩散算子,构造了一种求解浅水波方程的二阶精度能量稳定格式 [7]。Tadmor和Zhong构造出了求解二维浅水波方程的能量稳定格式 [8]。Roe和Ismail在2009年通过进一步分析熵稳定格式的熵耗散的大小,提出了对数值粘性更精确量化的一类熵稳定格式 [9],并应用该格式对Euler方程进行了数值模拟。该格式进一步控制了激波处的熵增,有效消除了膨胀激波和间断处的伪振荡。
近年来,高精度熵稳定格式的构造方法成为计算流体力学研究者致力突破的一个重要课题。2012年,Lefloch和Rohde提出了通过二阶熵守恒通量的线性组合构造任意偶数阶熵守恒通量的方法 [10]。Fjordholm等人则在文献 [11] 中提出在高阶熵守恒通量的基础上,通过适当的重构获得高阶的数值耗散算子,两者结合得到高阶熵稳定通量。他还强调,重构过程必须满足符号性质,从而保证最后的数值格式是熵稳定的。2015年,Fjordholm和Ray提出了一种满足符号性质的WENO (Weighted Essentially Non-Oscillatory)重构方法,记为SPWENO (Sign Preserving WENO)重构 [12],并将应用该重构得到的新格式对一维Burgers方程进行了数值模拟。国内的刘友琼、郑素佩等人也通过利用不同的重构方法对浅水波方程的高精度解进行了深入研究 [13] [14]。
2. 数值格式
考虑一维的无粘浅水波方程:
(1)
其中:守恒型变量
,通量
,
表示水的深度,
是
水的平均速度,g是重力加速度,计算时一般取为1。
本文采用有限体积方法,对空间方向上的求解区域进行均匀网格剖分,网格步长取
,得到一组网
格点
和一系列互不相交的单元
,
,则方程(1)的守恒型
半离散格式为:
(2)
其中
是与
相容的数值通量,满足
。
2.1. 熵守恒格式
2004年,Tadmor等人提出了适用于Navier-Stokes方程、浅水波方程等各种守恒系统的分段线性路径的熵守恒格式,然而该格式在计算每个通量时都包含复数表达式,在计算时容易出现分母为0的警告,而且其数值稳定性还存在一定的争议。于是,2008 年Fjordholm等人根据浅水波方程自身的特点,构造了简单的显式熵守恒EEC (Explicit Energy Conserving)格式,避免了这些缺点,其数值通量如下:
(3)
这里,
。熵守恒格式得到的数值解保持离散总熵不变,熵增为
0。该格式在光滑区域表现良好,但是由于缺少熵的耗散机制,在间断区域表现出强烈的振荡,求出的数值解表现出较强的色散效应。
任意偶数阶熵守恒数值通量可以通过二阶熵守恒通量的线性组合来构造,即
(4)
式中
满足如下p个线性方程:
(5)
例如,
时,四阶熵守恒通量为
(6)
时,六阶熵守恒通量为
(7)
2.2. 熵稳定格式
实际物理问题中,当间断发生时熵是增加的,上述通量无法再保证熵守恒。所以,在对应的数学模型中,我们所采用的数值方法必须有一定的熵耗散,具体耗散的大小取决于间断发生时熵增(熵产)的多少。
对于浅水波方程,我们引入熵函数
和熵通量函数
,且满足
,并考虑计算区域
及其边界
上的熵增
(8)
目前对这个积分直接求解是非常困难的,接下来我们讨论离散熵增。
考虑离散区间
,浅水波方程的半离散格式为
(9)
是单元交界面处的数值通量,单元交界面处的熵增
定义为熵通量F产生的熵增量与离散总熵之和
(10)
这里
。当间断发生时,我们假设
,则熵增
(11)
其中
。考虑到原始变量
与熵变量
的一一对应关系,我们对上式进行换元,并考虑最
简单的直线积分路径
[15],则有
(12)
熵增总是正的,即
,故我们将熵增量的表达式进一步修正为:
(13)
所以,界面
处的熵耗散项可以表示为
(14)
为了避免积分求解困难,我们采用三点Gauss-Legendre求积公式对上式中的积分近似求解,得到
(15)
其中
是高斯点,
是
区间上高斯求积公式的相关权重,
(16)
当解发生间断时,整个系统的熵不再是守恒的,所以我们在原熵守恒数值通量(3)的基础上减去熵增引起的耗散
,得到修正的有间断时的熵守恒数值通量
(17)
为了满足熵稳定条件,再引入经典的Roe-型耗散项
(18)
这样,就得到了一类新的求解浅水波方程的熵稳定数值通量
(19)
3. 高阶熵稳定格式
熵稳定格式有效地消除了膨胀激波和伪震荡,但只有一阶精度。高阶熵稳定通量的构造可以先通过对熵变量进行满足符号性质的重构获得高阶的数值耗散项,再将其与高阶的熵守恒通量相结合得到。所以,为了提高格式的精度,这一节中,我们利用改进的三阶SPWENO重构对熵变量v进行重构,从而构造求解浅水波方程的高精度高分辨率的数值格式。
3.1. 重构过程
设
分别为单元
与
上熵变量的多项式重构,并记
根据三阶WENO重构方法,单元交界面
左右两侧的重构值可分别表示为:
(20)
(21)
这里
为权重系数(忽略下标
),为了满足三阶精度和符号性质的要求,即
,权重系数应该满足如下条件:
(22)
其中
。Fjordholm在文献 [12] 给出了
的一种选取方式,但其表达式中存在多个人为
参数,编程复杂,而且数值实验结果表明这种方法并不能完全消除激波附近的伪振荡。本文将
的表达式改进为
(23)
(24)
其中
,
。
3.2. 高阶熵稳定格式
引理1 (Fjordholm, [11] )假设
,
代表熵守恒通量,如果重构过程满足符号性质,那么,数值通量
(25)
是熵稳定的。
为了提高熵稳定格式(19)的精度,我们采用四阶的熵守恒通量(6),并用上一节中提出的三阶SPWENO方法重构耗散项中的熵变量,从而得到一类高阶的熵稳定通量,记为
(26)
4. 数值算例
本文时间方向上采用强稳定的龙格–库塔方法:
符号约定:
ES:熵稳定格式,数值通量为(19);ES-SPWENO3:加入三阶SPWENO型重构的高阶熵稳定格式,数值通量为(26);Exact:精确解。
算例1高度接近0的溃坝问题,初始条件为
采用Neumann边界条件,计算区域为
,取空间网格数为
,时间上计算到
,该问题的初始速度使得水流向两边扩展,导致中间区域水深很小,需要注意的是,在解决此类问题时,水深可以接近0,但不会产生负值。在图1所示的数值结果中,ES格式和ES-SPWENO3格式都可以完成计算,但明显可以看出,与ES格式相比,ES-SPWENO3格式对间断的捕捉效果更佳,计算结果更加接近精确解。
![](//html.hanspub.org/file/7-2621788x91_hanspub.png?20210909091528806)
![](//html.hanspub.org/file/7-2621788x92_hanspub.png?20210909091528806)
Figure 1. Numerical results for Dam Break problem of Near-Zero Height
图1. 高度接近0的溃坝问题的数值结果
算例2大型溃坝问题,初始条件为
采用Neumann边界条件,计算区域为
,取空间网格数为
,时间上计算到
,从图2给出的数值结果来看,ES格式在稀疏波和激波附近出现了严重的抹平现象,相比之下,ES-SPWENO3
![](//html.hanspub.org/file/7-2621788x97_hanspub.png?20210909091528806)
![](//html.hanspub.org/file/7-2621788x98_hanspub.png?20210909091528806)
Figure 2. Numerical results for the Dam Break problem 图2. 大型溃坝问题的数值结果
格式能够更准确地捕捉解的结构,体现了其高精度、高分辨率的特点。从总熵随时间的变化图可以看出,与ES格式相比,ES-SPWENO3格式的耗散较少,避免了在间断处、稀疏波的波头和波尾处出现过度抹平的现象。