system: [SYSTEM]

user: 2. 格式的描述 我们考虑二维线性传输方程： u t + u x + u y = 0 (2.1) 它的解满足以下形式的守恒律： U ( u ) t + U ( u ) x + U ( u ) y = 0 (2.2) 在本文中取 U ( u ) = u 2 ，我们称之为能量。 在数值格式中，我们采用正规网格，令 x i = i h 1 ， t n = n τ ， x i ± 1 2 = ( i ± 1 2 ) h 1 ， y j = j h 2 ， y j ± 1 2 = ( j ± 1 2 ) h 2 。其中 h 1 和 h 2 分别为X轴方向和Y轴方向上的空间步长， τ 是时间步长， λ 1 = τ h 1 ， λ 2 = τ h 2 分别为X轴方向和Y轴方向上的网格步长比。 方程(2.1)的精确解为 u ( x ， y ， t ) ，方程(2.2)的精确解为 U ( x ， y ， t ) = u 2 ( x ， y ， t ) ，在数值格式中我们不仅 计算了数值解，还计算了数值能量。在网格 ( x i − 1 2 ， x i + 1 2 ) × ( y j − 1 2 ， y j + 1 2 ) 上， t n 时刻的数值解记为 u i ， j n ，数值 能量记为 U i ， j n ，它们分别为精确解和精确能量的网格平均的近似： u i j n ≃ 1 h 1 h 2 ∫ y j − 1 2 y j + 1 2 ∫ x i − 1 2 x i + 1 2 u ( x ， y ， t n ) d x d y (2.3) U i j n ≃ 1 h 1 h 2 ∫ y j − 1 2 y j + 1 2 ∫ x i − 1 2 x i + 1 2 U ( u ( x ， y ， t n ) ) d x d y (2.4) 对于二维方程(2.1)和(2.2)，我们采用Godunov型分裂算子法 [ 7 ] [ 8 ]，将其写成两部分A和B， A: { u t + u x = 0 ; U t + U x = 0 ; u ( x ， y ， 0 ) = u 0 ( x ， y ) . (2.5) B: { u t + u y = 0 ; U t + U y = 0 ; u ( x ， y ， 0 ) = u ( x ， y ， t ) . (2.6) 其中 U = u 2 。 下面，我们将讨论如何根据 t n 层上的数值解 u i ， j n 和数值能量 U i ， j n 来计算 t n + 1 层上的数值解 u i ， j n + 1 和数值能量 U i ， j n + 1 。 2.1. 守恒方程A的数值格式 对于守恒方程A，其数值格式为Godunov型，我们按照重构、发展、网格平均三步设计格式，但是与传统Godunov型格式不同的是，我们的格式不仅计算了数值解，还计算了数值能量。 第一步(重构)：在 t n 层上，对数值解 u i ， j n 和数值能量 U i ， j n 进行重构： R ( x ， t ; u i ， j n ， U i ， j n ) = u i ， j n + s i ， j n ( x − x i ) ， x ∈ ( x i − 1 2 ， x i + 1 2 ) (2.7) 显然， R ( x ， t ; u i ， j n ， U i ， j n ) 满足： 1 h 1 ∫ x i − 1 2 x i + 1 2 R ( x ， t ; u i ， j n ， U i ， j n ) d x = u i ， j n (2.8) 为了保持两个守恒律同时成立，我们还要求重构函数 R ( x ， t ; u i ， j n ， U i ， j n ) 满足： 1 h 1 ∫ x i − 1 2 x i + 1 2 ( R ( x ， t ; u i ， j n ， U i ， j n ) ) 2 d x = U i ， j n (2.9) 即重构函数数值能量的网格平均和数值能量相等。根据(2.9)式，我们可以算出重构函数的斜率 s i ， j n ： s i ， j n = sgn ( u i + 1 ， j n − u i − 1 ， j n ) 12 ( U i ， j n − ( u i ， j n ) 2 ) ( h 1 ) 2 (2.10) 从这里可以看出，与传统差分格式不同的是，斜率 s i ， j n 作为一个自由度，是通过数值能量的守恒得到的。 第二步(发展)：以 R ( x ， t ; u i ， j n ， U i ， j n ) 为 t n 层上的初值，求解初值问题： { v t + v x = 0 ; v ( x ， y j ; t n ) = R ( x ， t ; u i ， j n ， U i ， j n ) . − ∞ < x < ∞ ， t n < t < t n + 1 (2.11) 其精确解为： v ( x ， y j ; t n ) = R ( x − ( t − t n ) ， u i ， j n ， U i ， j n ) 。 第三步(网格平均)：在 t n + 1 层上，A部分的数值解 u i ， j A ， n + 1 和数值能量 U i ， j A ， n + 1 分别为： u i ， j A ， n + 1 = 1 h 1 ∫ x i − 1 2 x i + 1 2 v ( x ， y j ; t n + 1 ) d x (2.12) U i ， j A ， n + 1 = 1 h 1 ∫ x i − 1 2 x i + 1 2 ( v ( x ， y j ; t n + 1 ) ) 2 (2.13) 在实际的计算中，我们采用积分形式来计算数值解 u i ， j A ， n + 1 和数值能量 U i ， j A ， n + 1 (见文献 [ 3 ] )。 因此数值解 u i ， j A ， n + 1 的数值格式为： u i ， j A ， n + 1 = u i ， j n − λ 1 ( f ^ i + 1 2 ， j n − f ^ i − 1 2 ， j n ) (2.14) 其中，数值流函数为： f ^ i + 1 2 ， j n = 1 τ ∫ t n t n + 1 v ( x i + 1 2 ， y j ， t ) d t = u i ， j n + s i ， j n 2 ( h 1 − τ ) (2.15) 上式中的数值流函数是精确求解。如果方程是非线性传输方程，数值流函数也可以采用数值解法精确求出。 数值能量 U i ， j A ， n + 1 的数值格式为： U i ， j A ， n + 1 = U i ， j n − λ 1 ( F ^ i + 1 2 ， j n − F ^ i − 1 2 ， j n ) (2.16) 其中，数值能量流函数为： F ^ i + 1 2 ， j n = 1 τ ∫ t n t n + 1 ( v ( x i + 1 2 ， y j ， t ) ) 2 d t = ( u i ， j n ) 2 + u i ， j n s i ， j n ( h 1 − τ ) + ( s i ， j n ) 2 ( h 1 ) 2 4 λ 1 2 − 6 λ 1 + 3 12 (2.17) 2.2. 守恒方程B的数值格式 对于守恒方程B部分的数值格式，由分裂算子法可知，以守恒方程 A 得到的数值解 u i ， j A ， n + 1 和数值能量 U i ， j A ， n + 1 为初值，按照重构、发展、网格平均三步进行设计格式。在这里我们同样不仅计算数值解，也要计算数值能量。 第一步(重构)：对守恒方程A得到的数值解 u i ， j A ， n + 1 和数值能量 u i ， j A ， n + 1 进行重构。 R ( y ; u i ， j A ， n + 1 ， U i ， j A ， n + 1 ) = u i ， j A ， n + 1 + σ i ， j n + 1 ( y − y j ) ， y ∈ ( y j − 1 2 ， y j + 1 2 ) (2.18) 同样地在我们设计的数值格式中，要求重构函数 R ( y ; u i ， j A ， n + 1 ， U i ， j A ， n + 1 ) 满足： { 1 h 2 ∫ y j − 1 2 y j + 1 2 R ( y ; u i ， j A ， n + 1 ， U i ， j A ， n + 1 ) d y = u i ， j A ， n + 1 ， 1 h 2 ∫ y j − 1 2 y j + 1 2 ( R ( y ; u i ， j A ， n + 1 ， U i ， j A ， n + 1 ) ) 2 d y = U i ， j A ， n + 1 ， (2.19) 其中，(2.19)式的第一个式子保持了重构函数数值解的守恒，第二个式子保持了重构函数数值能量的守恒。 根据(2.19)式的第二个式子，我们可以解出斜率 σ i ， j n + 1 ： σ i ， j n + 1 = sgn ( u i ， j + 1 A ， n + 1 − u i ， j − 1 A ， n + 1 ) 12 ( U i ， j A ， n + 1 − ( u i ， j A ， n + 1 ) 2 ) ( h 2 ) 2 (2.20) 上式表明，斜率 σ i ， j n + 1 不仅与数值解和数值能量有关，而且数值解和数值能量之间是一种非线性关系。 第二步(发展)：以 R ( y ; u i ， j A ， n + 1 ， U i ， j A ， n + 1 ) 为初值，求解初值问题： { v t + v y = 0 ; v ( x i ， y ; t n ) = R ( y ， t ; u i ， j A ， n + 1 ， U i ， j A ， n + 1 ) . − ∞ < y < ∞ ， t n < t < t n + 1 (2.21) 其精确解为： v ( x i ， y ; t n ) = R ( y − ( t − t n ) ， u i ， j A ， n + 1 ， U i ， j A ， n + 1 ) 。 第三步(网格平均)：在 t n + 1 层上，我们采用积分形式计算数值解 u i ， j n + 1 和数值能量 U i ， j n + 1 。因此，数值解 u i ， j n + 1 和数值能量 U i ， j n + 1 的数值格式分别为： { u i ， j n + 1 = u i ， j A ， n + 1 − λ 2 ( g ^ i ， j + 1 2 n − g ^ i ， j − 1 2 n ) ， U i ， j n + 1 = U i ， j A ， n + 1 − λ 2 ( G ^ i ， j + 1 2 n − G ^ i ， j − 1 2 n ) ， (2.22) 其中，数值流函数和数值能量流函数分别为： g ^ i ， j + 1 2 n + 1 = 1 τ ∫ t n t n + 1 v ( x i ， y j + 1 2 ， t ) d t = u i ， j A ， n + 1 + σ i ， j n + 1 2 ( h 2 − τ ) ， (2.23) G ^ i ， j + 1 2 n + 1 = 1 τ ∫ t n t n + 1 ( v ( x i ， y j + 1 2 ， t ) ) 2 d t = ( u i ， j A ， n + 1 ) 2 + u i ， j A ， n + 1 σ i ， j n + 1 ( h 2 − τ ) + ( σ i ， j n + 1 ) 2 ( h 2 ) 2 4 λ 2 2 − 6 λ 2 + 3 12 (2.24) 综上所述，对于方程(2.1)和(2.2)，由A部分的数值格式(2.14)、(2.16)和B部分的数值格式(2.22)可知，数值解和数值能量的格式可以写成如下形式： u i ， j n + 1 = u i ， j n − λ 1 ( f ^ i + 1 2 ， j n − f ^ i − 1 2 ， j n ) − λ 2 ( g ^ i ， j + 1 2 n − g ^ i ， j − 1 2 n ) ， (2.25) U i ， j n + 1 = U i ， j n − λ 1 ( F ^ i + 1 2 ， j n − F ^ i − 1 2 ， j n ) − λ 2 ( G ^ i ， j + 1 2 n − G ^ i ， j − 1 2 n ) . (2.26)