求解带源项的浅水波方程的高分辨率熵相容格式
High Resolution Entropy Consistent Scheme for Solving Shallow Water Wave Equations with Source Terms
摘要: 浅水波方程对湖泊、河流等波动问题的研究具有重要意义。源项是对底部地势的描述。带源项的浅水波方程可以归结为非线性的双曲守恒律问题。本文采用结构网格,构造了一种熵相容格式求解带源项的浅水波方程,并对熵守恒变量使用基于MUSCL格式的斜率限制器重构,构造具有2阶精度的熵相容格式。在数值实验中证明了该格式有效地避免了非物理现象的产生,并且可以准确地捕捉激波,具有良好的稳健性。
Abstract: Shallow water wave equation is of great significance to the study of wave problems in lakes and riv-ers. The source term is a description of the topography at the bottom. The shallow water wave equation with source term can be reduced to a nonlinear hyperbolic conservation law problem. In this paper, an entropy consistent scheme is constructed to solve the shallow water wave equation with the source term by using the structural grid. The entropy conservation variables are recon-structed by using a slope limiter which is based on the MUSCL scheme to construct an entropy con-sistent scheme with second-order accuracy. Numerical experiments show that the scheme can ef-fectively avoid the occurrence of non-physical phenomena, and can accurately capture shock waves, which has good robustness.
文章引用:张婧琳, 高凡琪, 孙妍. 求解带源项的浅水波方程的高分辨率熵相容格式[J]. 应用数学进展, 2022, 11(11): 7895-7904. https://doi.org/10.12677/AAM.2022.1111836

1. 引言

浅水波方程是对各种环境流体运动的数学描述,源项是底部地形。它对海洋,河流等波动问题的研究具有重要意义。带有源项的浅水波方程具有如下形式:

U t + f ( U ) x = S , (1)

其中

U = ( h h u ) , f ( U ) = ( h u h u 2 + 1 2 g h 2 ) , S = ( 0 g h b ) ,

h表示水深,u表示水流速度,g表示重力加速度, b = b ( x ) 表示底部地势,是关于x的函数。

当源项为0时,浅水波方程可以归结为双曲守恒律方程。即便双曲守恒律方程的初值函数是光滑的,它的解也可能会产生激波、接触间断等,这种情况的出现是不符合古典解有关理论的。为解决该类问题,1954年,Lax提出了弱解 [1] 这一概念,为数值方法的发展打下了良好的理论基础。Lax在1973年证明了熵稳定条件等价于“粘性消失” [2]。文献 [3] 把熵稳定条件引入到了带源项的浅水波方程。1987年Tadmor提出了熵变量和熵势的概念,构造了二阶精度的熵守恒格式,可以适用于各种网格 [4]。在熵守恒格式的基础上适当地加入一些粘性,就可以达到熵稳定。2006年,Roe提出在熵守恒格式上增加一个数值粘性项,称为ERoe格式,这是一类熵稳定格式 [5],该格式保持了Roe格式中,对激波的捕捉效果较好这一特点。熵守恒和熵稳定格式是获得具有物理意义的,且数值上稳定的解的一种高效途径,具有更实用的指导意义。2009年,Roe和Ismail进一步分析得到:当解在跨过激波时,会产生激波强度的立方量级熵增,在这基础上继续发展了求解Burgers方程与Euler方程时,将数值粘性项发展为更精准量化的熵相容格式 [6]。熵相容格式对数值粘性的控制比熵稳定格式的数值粘性更为精细,其数值结果更加符合物理现象,保证了激波稳定性的同时能得到更加精确的数值解。2018年,张海军,封建湖等构造了带源项的浅水波方程的熵稳定格式,模拟效果较好 [7]。2021年,任璇,封建湖等,提出了一种基于MUSCL重构的斜率限制器,有效地提高了双曲方程熵相容格式的分辨率 [8]。

本文采用有限体积法对带源项的浅水波方程求解,对源项使用中心差分格式离散,在熵相容格式的基础上,使用基于MUSCL重构的斜率限制器,对方程求解。通过数值实验证明该格式具有良好的性质,有效地避免了产生伪振荡等非物理现象。

2. 有限体积法

对式(1)在 [ x i 1 / 2 , x i + 1 / 2 ] 上积分,得到半离散格式

d U i d t = 1 Δ x ( F i + 1 2 F i 1 2 ) S ˜ i , (2)

其中 U i [ x i 1 / 2 , x i + 1 / 2 ] 上的单元平均, F 是数值通量, S ˜ i = ( 0 g Δ x ( h ¯ i + 1 2 [ b ] i + 1 2 + h ¯ i 1 2 [ b ] i 1 2 ) ) 是地势的中心差分。

定义

φ ¯ i + 1 2 = φ i + 1 + φ i 2 , [ φ ] i + 1 2 = φ i + 1 φ i .

时间上采用使用三阶Runge-Kutta时间离散

{ U i * = U i n + Δ t L ( U i n ) , U i * * = 3 4 U i n + 1 4 U i * + 1 4 Δ t L ( U i * ) , U i ( n + 1 ) = 1 3 U i n + 2 3 U i * * + 2 3 Δ t L ( U i * * ) . (3)

其中 L ( U ) = 1 Δ x ( F i + 1 2 F i 1 2 ) S ˜ i

3. 带源项浅水波方程的求解

3.1. 熵相容格式

令熵函数为 E ( U ) = ( h u 2 + g h 2 ) 2 + g h b ,熵通量函数 H ( U ) = g u h 2 + h u 3 2 ,定义熵变量 V = E ( U ) = ( g ( h + b ) u 2 2 , u ) T ,熵势 Φ = 1 2 g u h 2 ,从而可得熵守恒格式的数值通量

F i + 1 2 c = ( h ¯ i + 1 2 u ¯ i + 1 2 g 2 ( h ¯ 2 ) i + 1 2 + h ¯ i + 1 2 ( u ¯ i + 1 2 ) 2 ) . (4)

双曲守恒律方程的解在光滑处才是守恒的,根据熵条件

t E ( U ) + x H ( U ) 0 , (5)

在激波等不连续点附近需要产生耗散,因此,需要额外添加耗散项,构建熵稳定格式。将熵变量的数值耗散项添加到熵守恒格式的数值通量,有

F i + 1 2 e s = F i + 1 2 c 1 2 D i + 1 2 ( V i + 1 V i ) , (6)

其中 D i + 1 2 是对称半正定矩阵。

Roe格式的数值通量具有如下形式 [6]

F i + 1 2 R o e = 1 2 ( f ( U i + 1 ) + f ( U i ) ) 1 2 R i + 1 2 Λ i + 1 2 R i + 1 2 1 ( U i + 1 U i ) , (7)

其中 R i + 1 2 是通量雅可比矩阵 U f ( U ) 的特征向量, Λ i + 1 2 = d i a g ( | λ 1 | , | λ 2 | , , | λ n | ) 是以通量雅可比矩阵的特征值为对角线元素的非负对角矩阵。这些矩阵和特征值都是Roe平均状态。

因为 Δ U = V U Δ V ,其中 V U 是对称正定的。由Barth特征向量缩放定理 [9],有 V U = R ˜ R ˜ T ,Roe通量改写为

F i + 1 2 R o e = 1 2 ( f ( U i + 1 ) + f ( U i ) ) 1 2 R ˜ i + 1 2 Λ i + 1 2 R ˜ i + 1 2 T [ V ] i + 1 2 . (8)

于是使用Roe的数值耗散项

D i + 1 2 = R ˜ i + 1 2 Λ i + 1 2 R ˜ i + 1 2 T , (9)

为了简便,下文将 R ˜ i + 1 2 写为 R i + 1 2

带源项的浅水波方程有

R i + 1 2 = 1 2 g ( 1 1 u ¯ i + 1 2 g h ¯ i + 1 2 u ¯ i + 1 2 + g h ¯ i + 1 2 ) , (10)

Λ i + 1 2 = d i a g ( | u ¯ i + 1 2 g h ¯ i + 1 2 | , | u ¯ i + 1 2 + g h ¯ i + 1 2 | ) . (11)

Roe和Ismail指出,解在跨越激波时会产生立方级的熵增 [6],因此,需要更多的耗散项修正熵守恒格式,从而抑制振荡。

在二维双曲守恒律方程中,跨越激波产生熵增为 [6]

U ˜ i + 1 2 = 1 2 [ V ] i + 1 2 0 1 ( 2 ξ 1 ) R ( U ( ξ ) ) Λ ( U ( ξ ) ) R 1 ( U ( ξ ) ) d ξ [ U ] i + 1 2 . (12)

选择积分路径为 U = ( 1 ξ ) U i + ξ U i + 1 0 < ξ < 1 。熵增总是正的,即有 U ˜ > 0

熵增 U ˜

U ˜ i + 1 2 = 1 2 [ V ] i + 1 2 0 1 ( 2 ξ 1 ) R ( U ( ξ ) ) Λ ( U ( ξ ) ) R 1 ( U ( ξ ) ) d ξ [ U ] i + 1 2 = 1 2 [ V ] i + 1 2 0 1 ( 2 ξ 1 ) R ( U ( ξ ) ) Λ ( U ( ξ ) ) R 1 ( U ( ξ ) ) [ U ] i + 1 2 d ξ 1 2 [ V ] i + 1 2 0 1 ( 2 ξ 1 ) R ( U ( ξ ) ) Λ ( U ( ξ ) ) R 1 ( U ( ξ ) ) R ( U ( ξ ) ) R T ( U ( ξ ) ) [ V ] i + 1 2 d ξ = 1 2 [ V ] i + 1 2 0 1 ( 2 ξ 1 ) R ( U ( ξ ) ) Λ ( U ( ξ ) ) R T ( U ( ξ ) ) d ξ [ V ] i + 1 2 . (13)

为了保证(13)的符号性,只需保证积分项正定,因此,作如下修正:

U ˜ i + 1 2 = 1 2 [ V ] i + 1 2 | 0 1 ( 2 ξ 1 ) R ( U ( ξ ) ) Λ ( U ( ξ ) ) R T ( U ( ξ ) ) d ξ | [ V ] i + 1 2 , (14)

对应耗散项为

D i + 1 2 e c = 1 2 0 1 ( 2 ξ 1 ) R ( U ( ξ ) ) Λ ( U ( ξ ) ) R T ( U ( ξ ) ) d ξ [ V ] i + 1 2 , (15)

对上式的积分项使用Gauss-Legendre求积公式近似,于是有

D i + 1 2 e c = 1 2 R i + 1 2 | k = 1 ω k ( 2 s k 1 ) Λ ( U ( s k ) ) | R i + 1 2 T [ V ] i + 1 2 , (16)

其中 ω 为求积系数, s k 为高斯点,在 [ 0 , 1 ] 上积分。本文中采用三点求积公式,高斯点和求积系数分别为 s 1 = 3 5 , s 2 = 0 , s 3 = 3 5 ω 1 = 5 9 , ω 2 = 8 9 , ω 3 = 5 9 。因此,熵相容格式的数值通量为

F i + 1 2 e c = F i + 1 2 c 1 2 R i + 1 2 ( Λ i + 1 2 + | k = 1 ω k ( 2 s k 1 ) Λ ( U ( s k ) ) | ) R i + 1 2 T [ V ] i + 1 2 . (17)

3.2. 基于MUSCL格式的斜率限制器

在每个控制体单元 I i = [ x i 1 / 2 , x i + 1 / 2 ] 上,单元长度为 Δ x ,对每个 U i 进行重构,记重构后的函数为 L i ( x ) ,如果有

| L i ( x ) U i ( x ) | O ( ( Δ x ) k + 1 ) , (18)

则称这个重构函数具有k-阶精度。 U i n 表示在第n个时间层上,控制体单元 I i 的平均,有

U i n = 1 Δ x I i L i ( x ) d x = 1 Δ x I i U i ( x ) d x , (19)

于是有,

L i ( x ) = U i n + ( x x i ) Δ i Δ x , x [ x i 1 2 , x i + 1 2 ] (20)

其中 Δ i 是选择的重构斜率。于是,点 x i 处的左右状态分别为

{ L i l = U i n 1 2 Δ i , L i r = U i n + 1 2 Δ i . (21)

构造时,首先将重构函数 L i ( x ) 进行泰勒展开,有

L i ( x ) = U i ( x i ) + U i x | x i ( x x i ) + 2 U i x 2 | x i ( x x i ) 2 2 + (22)

继续将 U i ( x ) x i 处进行泰勒展开,可得

U i n = 1 Δ x I i U i ( x ) d x = 1 Δ x I i ( U i ( x i ) + U i x | x i ( x x i ) + 2 U i x 2 | x i ( x x i ) 2 2 + ) d x = U i ( x i ) + 0 + 1 Δ x 2 U i x 2 | x i I i ( x x i ) 2 2 d x + (23)

于是

U i ( x i ) = U i n 1 Δ x 2 U i x 2 | x i I i ( x x i ) 2 2 d x + (24)

将(24)带入(22),可得

L i ( x ) = U i n + U i x | x i ( x x i ) + 1 2 2 U i x 2 | x i ( ( x x i ) 2 1 Δ x I i ( x x i ) 2 d x ) + (25)

L i ( x ) = U i n + U i x | x i ( x x i ) + 1 2 2 U i x 2 | x i ( ( x x i ) 2 1 Δ x I i ( x x i ) 2 d x ) . (26)

重构函数是二阶的,即 | L i ( x ) U i ( x ) | O ( ( Δ x ) 3 )

L i ( x ) = U i n + H ( x x i ) , (27)

其中

H ( x x i ) = U i x | x i ( x x i ) + 1 2 2 U i x 2 | x i ( ( x x i ) 2 1 Δ x I i ( x x i ) 2 d x ) . (28)

将一阶偏导和二阶偏导使用中心差商格式近似

U i x | x i = U i + 1 n U i 1 n 2 Δ x , 2 U i x | x i = U i + 1 n 2 U i n + U i 1 n Δ x 2 ,

将重构函数(27)增加斜率限制器,进一步提高精度,

L i ( x ) = U i n + Φ i H ( x x i ) , (29)

其中 Φ i 为增加的斜率限制器 [8]。

带有斜率限制器的重构在点 x i 的左右状态,分别为

{ L i l = U i n + Φ i H ( x l x i ) , L i r = U i n + Φ i H ( x r x i ) . (30)

{ min ( U i 1 n , U i n ) L i l max ( U i 1 n , U i n ) , min ( U i + 1 n , U i n ) L i r max ( U i + 1 n , U i n ) , (31)

以确保不产生新局部极值,将(31)减去 U i n

{ min ( U i 1 n U i n , 0 ) L i l U i n max ( U i 1 n U i n , 0 ) , min ( U i + 1 n U i n , 0 ) L i r U i n max ( U i + 1 n U i n , 0 ) . (32)

U i 1 n U i n > 0 U i + 1 n U i n > 0 时,有

{ 0 < Φ i H ( x l x i ) < U i 1 n U i n , 0 < Φ i H ( x r x i ) < U i + 1 n U i n , (33)

{ 0 < L i l U i n < U i 1 n U i n , 0 < L i r U i n < U i + 1 n U i n . (34)

因此,选择限制器

{ Φ i l = min ( 1 , U i 1 n U i n H ( x l x i ) ) , Φ i r = min ( 1 , U i + 1 n U i n H ( x r x i ) ) . (35)

为了限制 Φ i [ 0 , 1 ] ,增加限制条件

{ Φ i l = max ( min ( 1 , U i 1 n U i n H ( x l x i ) ) , 0 ) , Φ i r = max ( min ( 1 , U i + 1 n U i n H ( x r x i ) ) , 0 ) . (36)

于是,重构后的左右状态分别为

{ L i l = U i n + Φ i l H ( x l x i ) , L i r = U i n + Φ i r H ( x r x i ) . (37)

3.3. 高分辨率熵相容格式

将3.2节中的斜率限制器应用到带源项的浅水波方程,得到了具有带源项浅水波方程的二阶精度的高分辨率熵相容格式。

带源项的浅水波方程高分辨率熵相容格式的数值通量为

F i + 1 2 e c = F i + 1 2 c 1 2 R i + 1 2 ( Λ i + 1 2 + | k = 1 ω k ( 2 s k 1 ) Λ ( U * ( s k ) ) | ) R i + 1 2 T [ V * ] i + 1 2 . (38)

其中 U * , V * 是使用斜率限制器重构后的变量值。利用(37)式计算重构, L i l 代替左状态 U i L i r 代替右状态 U i + 1 ,根据重构后的 U * 值得到熵变量 V * ,最后将重构值带入(38),得到带源项浅水波方程的具有二阶精度的熵相容格式数值通量。

4. 数值实验

算例中的参考解使用2000个加密网格的熵稳定格式。EC表示熵相容格式,EC-Limited表示使用斜率限制器的高分辨率熵相容格式。

算例1. 考虑在区间 [ 1 , 1 ] 上,连续的底部地势 b ( x ) = 1 上的大型溃坝问题,初值条件为

u ( x , 0 ) = { 15 x > 0 , 1 x < 0 , h ( x , 0 ) = 1.

取100个网格点,计算到 t = 0.1 ,取 g = 1 C F L = 0.1 ,使用Neumann边界条件,图1所示,高度h的变化情况,熵相容格式的抹平现象更严重,带有斜率限制器的熵相容格式激波捕捉效果更好。

Figure 1. Variation of height h of large dam break problem

图1. 大型溃坝问题高度h的变化情况

算例2. 在 [ 0 , 150 ] 上计算溃坝问题,底部地势和初值条件分别为

b ( x ) = { 0.8 | x 75 | 18.75 , 0 else , h ( x , 0 ) = { 10 b ( x ) 0 x 75 , 2 b ( x ) else , u ( x , 0 ) = 0.

取200个网格点,计算到 t = 4.5 ,取 g = 1 C F L = 0.1 ,使用Neumann边界条件,图2所示是 h + b 的变化情况,熵相容格式有轻微的抹平现象,使用斜率限制器的熵相容格式效果更好,在捕捉到激波的情况下,抑制了伪振荡的产生。

算例3. 考虑在 [ 0 , 1 ] × [ 0 , 1 ] 上二维圆形溃坝问题,初值条件为

h ( x , y , 0 ) = { 2 x 2 + y 2 < 0.5 , 1 else , u ( x , y , 0 ) = 0 , v ( x , y , 0 ) = 0 , b ( x , y ) = 0.

Figure 2. Variation of the total height h + b of the one-dimensional dam break problem

图2. 一维溃坝问题总高度 h + b 的变化情况

Figure 3. Variation of height h of two-dimensional circular dam break problem. (a) 3D graphics of height h in entropy consistent scheme (left) and high-resolution entropy consistent scheme (right); (b) The cross section y = x and the change in height h

图3. 二维圆形溃坝问题高度h的变化情况。(a)熵相容格式(左)和高分辨率熵相容格式(右)高度h的三维图形;(b)截面 y = x 高度h的变化

将空间离散为100 × 100个网格点,取 C F L = 0.1 ,计算到 t = 0.2 ,使用Neumann边界条件,如图3所示分别为熵相容格式和带有斜率限制器的高分辨率熵相容格式的关于高度h的三维图形和 y = x 的截面,的变化,熵相容格式的抹平现象较严重,带有斜率限制器的熵相容格式改善了这一情况,并且没有伪振荡产生,模拟效果更好。

5. 结论

浅水波方程的研究在实际生活中具有重要意义,通过数值实验表明带有基于MUSCL重构的斜率限制器的熵相容格式在捕捉激波时具有较好的效果,且抹平现象较少,避免了伪振荡的产生。该格式明显优于熵相容格式。但本文未对多维情况进一步推导,多维情况还需要对限制器进行修正,对多个维度重构,得到其高分辨率的熵相容格式。

NOTES

*通讯作者。

参考文献

[1] Lax, P.D. (1954) Weak Solutions of Non-Linear Hyperbolic Equations and Their Numerical Computations. Communica-tions on Pure and Applied Mathematics, 7, 159-193.
https://doi.org/10.1002/cpa.3160070112
[2] Lax, P.D. (1973) Hyperbolic Systems of Conservation Laws and the Mathematical Theory of Shock Waves. V. 11 of SIAM Re-gional Conference Lectures in Applied Mathematics, New York.
https://doi.org/10.1137/1.9781611970562
[3] Fjorgholm, U.S., Mishra, S. and Tadmor, E. (2011) Well-Balanced and Energy Stable Schemes for the Shallow Water Equations with Discontinuous Topography. Journal of Computational Physics, 230, 5587-5609.
https://doi.org/10.1016/j.jcp.2011.03.042
[4] Tadmor, E. (1987) The Numerical Viscosity of Entropy Stable Schemes for Systems of Conservation Laws. Mathematics of Computation, 49, 91-103.
https://doi.org/10.1090/S0025-5718-1987-0890255-3
[5] Roe, P.L. (2006) Entropy Conservation Schemes for Euler Equations. Hyperbola Difference Equation 2006, Lyon.
[6] Ismail, F. and Roe, P.L. (2009) Affordable, Entro-py-Consistent Euler Flux Functions II: Entropy Production at Shocks. Journal of Computational Physics, 228, 5410-5436.
https://doi.org/10.1016/j.jcp.2009.04.021
[7] 张海军, 封建湖, 程晓晗, 李雪. 带源项浅水波方程的高分辨率熵稳定格式[J]. 应用数学和力学, 2018, 39(8): 935-945.
https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CJFD&dbname=CJFDLAST2018&filename=YYSX201808007 &uniplatform=NZKPT&v=LyJ3FFLSi70Z7mLSv0xTumW1BTAg-qFXbc3AJw93Ah_YgGyBGh3-BAwmxZdgY9Sx
[8] 任璇. 基于斜率限制器的高分辨率熵相容格式研究[D]: [硕士学位论文]. 西安: 长安大学, 2021.
[9] Barth, T.J. (1999) Numerical Methods for Gasdynamic Systems on Unstructured Meshes. In: Kröner, D., Ohlberger, M. and Rohde, C., Eds., An Introduction to Recent Developments in Theory and Numerics for Conservation Laws, Springer, Heidelberg, 195-285.
https://doi.org/10.1007/978-3-642-58535-7_5