system: [SYSTEM]

user: 3. 算法 为了有效解决对流占优问题，第一步，分别对每个方向的方程采用特征线法处理，构造本质非振荡特征差分格式；第二步，加入质量校正项，引入保守的MMOCAA格式，得到校正后的本质非振荡守恒特征差分格式，并表示为矩阵形式；第三步，对于方程右端的未知项用本质非振荡插值求解，使其转化为已知项；第四步，利用追赶法 [ 16 ] 求解对角占优的三对角矩阵。 3.1. 特征线法 Step 1：沿x方向 ∂ c ∂ t + ∂ ∂ x ( u 1 c − D 1 ∂ c ∂ x ) = f ， (3.1) 采用特征线法 ∂ c ∂ τ 1 = ∂ c ∂ t cos α + ∂ c ∂ x cos β . (3.2) τ 1 为x方向特征线， β 和 α 分别为特征线与x和t方向的夹角，则 { cos α = 1 1 + u 1 2 cos β = u 1 1 + u 1 2 代入(3.2)得 ∂ c ∂ t 1 1 + u 1 2 + ∂ c ∂ x u 1 1 + u 1 2 = ∂ c ∂ τ 1 . 方程两边同乘 1 + u 1 2 ，代入(3.2)式，得 ∂ c ∂ τ 1 1 + u 1 2 − D 1 ∂ 2 c ∂ x 2 = f ， 离散上式，得 C i j n − 1 2 − C ¯ i j n − 1 Δ t − D 1 C i + 1 ， j n − 1 2 − 2 C i j n − 1 2 + C i − 1 ， j n − 1 2 h 2 = f i j .   (3.3) { C i j } 表示 { c i j } 的数值解， { C ¯ i j } 将在后面给出。 Step 2：沿y方向 ∂ c ∂ t + ∂ ∂ y ( u 2 c − D 2 ∂ c ∂ y ) = 0 ， 令 ∂ c ∂ τ 2 = ∂ c ∂ t cos ϕ + ∂ c ∂ y cos φ ， 其中 τ 2 是y方向的特征线， φ ， ϕ 分别为特征线与y，t方向夹角，离散化，得 C i j n − C ¯ i j n − 1 2 Δ t − D 2 C i ， j + 1 n − 2 C i j n + C i ， j − 1 n h 2 = 0 ， 其中， { C i j } 表示 { c i j } 的数值解， { C ¯ i j n − 1 } 将在后面给出。而此时数值格式质量不守恒。 为解决格式质量不守恒问题，结合MMOCAA格式，现提出守恒的特征差分格式。 (1-a) 沿x方向，令 C ¯ i j n − 1 = I 1 C i j n − 1 ( x ¯ i ) ， λ 1 = − u 1 Δ t h ， x ¯ i = x i − u 1 Δ t . 不失一般性，我们假定 Δ t = O ( h 2 ) ，即点 x ¯ i 落在 x i − 1 和 x i + 1 之间。 (1-b) 引入三个质量通量： t = t n − 1 时的初始质量通量 R n − 1 = ∑ i = 1 N ∑ j = 1 N C i j n − 1 h 2 . 中间质量通量 R ¯ n − 1 = ∑ i = 1 N ∑ j = 1 N C ¯ i j n − 1 h 2 . 改进的质量通量 R ˜ n − 1 = ∑ i = 1 N ∑ j = 1 N C ˜ i j n − 1 h 2 . 其中， C ˜ i j n − 1 = { max ( I 1 C i j n − 1 ( x ˜ i + ) ， I 1 C i j n − 1 ( x ˜ i − ) ) ， R n − 1 > R ¯ n − 1 ， min ( I 1 C i j n − 1 ( x ˜ i + ) ， I 1 C i j n − 1 ( x ˜ i − ) ) ， R n − 1 ≤ R ¯ n − 1 ， x ˜ i + = x ¯ i + δ 1 ， x ˜ i − = x ¯ i − δ 1 ， δ 1 = r 1 u 1 ( Δ t ) 2 ， r 1 = D 1 Δ t h 2 且 0 < r 1 < 2 。 (1-c) 质量扰动参数 θ 1 的确定 如果 R ¯ n − 1 = R ˜ n − 1 ≠ R n − 1 ，在这个时间步长内，误差是允许接收的。当 R ¯ n − 1 ≠ R ˜ n − 1 时， θ 1 被确定为 R n − 1 = θ 1 R ¯ n − 1 + ( 1 − θ 1 ) R ˜ n − 1 . (1-d) 定义 { C ^ i j n − 1 } C ^ i j n − 1 = θ 1 C ¯ i j n − 1 + ( 1 − θ 1 ) C ˜ i j n − 1 . 它是容易验证格式沿x方向满足质量守恒 (1-e) 计算 { C i j n − 1 2 } 。 加入质量校正后，(3.3)式变成 C i j n − 1 2 − C ^ i j n − 1 Δ t − D 1 C i + 1 ， j n − 1 2 − 2 C i j n − 1 2 + C i − 1 ， j n − 1 2 h 2 = f i j .   (3.4) 两边同乘 Δ t ，令 r 1 = D 1 Δ t h 2 则 C i j n − 1 2 − C ^ i j n − 1 − r 1 ( C i + 1 ， j n − 1 2 − 2 C i j n − 1 2 + C i − 1 ， j n − 1 2 ) = f i j Δ t . 化简得 − r 1 C i + 1 ， j n − 1 2 + ( 2 r 1 + 1 ) C i j n − 1 2 − r 1 C i − 1 ， j n − 1 2 = f i j Δ t + C ^ i j n − 1 .   (3.5) ( 2 r 1 + 1 − r 1 − r 1 2 r 1 + 1 − r 1 ⋱ ⋱ ⋱ ⋱ ⋱ − r 1 − r 1 2 r 1 + 1 ) ( c 1 c 2 ⋮ c N − 1 c N ) = ( F 1 F 2 ⋮ F N − 1 F N ) 记为 A C = F 其中系数矩 A = ( 2 r 1 + 1 − r 1 − r 1 2 r 1 + 1 − r 1 ⋱ ⋱ ⋱ ⋱ ⋱ − r 1 − r 1 2 r 1 + 1 ) 因为 2 r 1 + 1 > | r 1 | + | r 1 | ，所以系数矩阵A是一个严格对角占优的三对角矩阵。 (2-a) 沿y方向， C ¯ i j n − 1 2 = I 2 C i j n − 1 2 ( y ¯ j ) ，           λ 2 = − u 2 Δ t h ， 假定 Δ t = O ( h 2 ) ，     y ¯ j ∈ [ y j − 1 ， y j + 1 ] 。 (2-b) 质量通量。 t = t n − 1 2 时的质量通量 R n − 1 2 = ∑ i = 1 N ∑ j = 1 N C i j n − 1 2 h 2 . 中间质量通量 R ¯ n − 1 2 = ∑ i = 1 N ∑ j = 1 N C ¯ i j n − 1 2 h 2 . 改进的质量通量 R ˜ n − 1 2 = ∑ i = 1 N ∑ j = 1 N C ˜ i j n − 1 2 h 2 . 其中， C ˜ i j n − 1 2 = { max ( I 2 C i j n − 1 2 ( y ˜ j + ) ， I 2 C i j n − 1 2 ( y ˜ j − ) ) ，           R n − 1 2 > R ¯ n − 1 2 ， min ( I 2 C i j n − 1 2 ( y ˜ j + ) ， I 2 C i j n − 1 2 ( y ˜ j − ) ) ，           R n − 1 2 ≤ R ¯ n − 1 2 ， y ˜ j + = y ¯ j + η 2 ， y ˜ j − = y ¯ j − η 2 其中， η 2 = r 2 u 2 ( Δ t ) 2 。 (2-c) θ 2 的确定 如果 R ¯ n − 1 2 = R ˜ n − 1 2 ≠ R n − 1 2 ，误差可以接收。 当 R ¯ n − 1 2 ≠ R ˜ n − 1 2 时， θ 2 被确定为 R n − 1 2 = θ 2 R ¯ n − 1 2 + ( 1 − θ 2 ) R ˜ n − 1 2 . (2-d) 计算 { C i j n } 。定义 { C ^ i j n − 1 2 } 满足 C ^ i j n − 1 2 = θ 2 C ¯ i j n − 1 2 + ( 1 − θ 2 ) C ˜ i j n − 1 2 . (3.4)式加入质量校正后，得 C i j n − C ^ i j n − 1 2 Δ t − D 2 C i ， j + 1 n − 2 C i j n + C i ， j − 1 n h 2 = 0 ， (3.6) 令 r 2 = D 2 Δ t h 2 ，得 − r 2 C i j n + ( 2 r 2 + 1 ) C i j n − r 2 C i ， j − 1 n = C ^ i j n − 1 2 .   (3.7) 表示成矩阵形式，即 B C = F 由于A，B均为严格对角占优三对角矩阵，故采用追赶法求解。 3.2. 本质非振荡插值 本部分给出 { C ¯ i j n − 1 ， C ˜ i j n − 1 ， C ¯ i j n − 1 2 ， C ˜ i j n − 1 2 } 的计算方法。为了避免数值震荡，欲通过比较两个二阶差商的绝对值，选择绝对值相对较小的方法给出(文献 [ 8 ] )。 1) 当 u 1 为正数时， (1-1) 当 | C i − 2 ， j n − 1 − 2 C i − 1 ， j n − 1 + C i j n − 1 | > | C i + 1 ， j n − 1 − 2 C i j n − 1 + C i − 1 ， j n − 1 | 时，利用牛顿插值得 C ¯ i j n − 1 = C i j n − 1 + C i j n − 1 − C i − 1 ， j n − 1 h ( x ¯ i − x i ) + C i + 1 ， j n − 1 − 2 C i j n − 1 + C i − 1 ， j n − 1 2 h 2 ( x ¯ i − x i − 1 ) ( x ¯ i − x i ) = 1 2 h 2 ( x ¯ i − x i − 1 ) ( x ¯ i − x i ) C i + 1 ， j n − 1 + [ 1 + 1 h ( x ¯ i − x i ) − 1 h 2 ( x ¯ i − x i − 1 ) ( x ¯ i − x i ) ] C i j n − 1     + [ − 1 h ( x ¯ i − x i ) + 1 2 h 2 ( x ¯ i − x i − 1 ) ( x ¯ i − x i ) ] C i − 1 ， j n − 1 = ( h − u 1 Δ t ) ( − u 1 Δ t ) 2 h 2 C i + 1 ， j n − 1 + ( 1 − 1 h u 1 Δ t − 1 h 2 ( h − u 1 Δ t ) ( − u 1 Δ t ) ) C i j n − 1     + ( 1 h u 1 Δ t + ( h − u 1 Δ t ) ( − u 1 Δ t ) 2 h 2 ) C i − 1 ， j n − 1 (3.8) 同理 C ˜ i j n − 1 = C i j n − 1 + C i j n − 1 − C i − 1 ， j n − 1 h ( x ˜ i − x i ) + C i + 1 ， j n − 1 − 2 C i j n − 1 + C i − 1 ， j n − 1 2 h 2 ( x ˜ i − x i − 1 ) ( x ˜ i − x i ) . 令 k 1 = 1 h 2 ( h − u 1 Δ t + δ 1 ) ( − u 1 Δ t + δ 1 ) ，   k 2 = 1 h ( − u 1 Δ t + δ 1 ) ， k 3 = 1 h 2 ( h − u 1 Δ t − δ 1 ) ( − u 1 Δ t − δ 1 ) ，   k 4 = 1 h ( − u 1 Δ t − δ 1 ) . 由上式计算可得，当 x ˜ i + = x ¯ i + δ 1 时， C ˜ i j n − 1 ， + = k 1 2 C i + 1 ， j n − 1 + ( 1 + k 2 − k 1 ) C i j n − 1 + ( − k 2 + k 1 2 ) C i − 1 ， j n − 1 . 当 x ˜ i − = x ¯ i − δ 1 时， C ˜ i j n − 1 ， − = k 3 2 C i + 1 ， j n − 1 + ( 1 + k 4 − k 3 ) C i j n − 1 + ( − k 4 + k 3 2 ) C i − 1 ， j n − 1 . 当 R n − 1 > R ¯ n − 1 时， C ˜ i j n − 1 = max { C ˜ i j n − 1 ， + ， C ˜ i j n − 1 ， − } ， R n − 1 ≤ R ¯ n − 1 时， C ˜ i j n − 1 = min { C ˜ i j n − 1 ， + ， C ˜ i j n − 1 ， − } 。 (1-2) 当 | C i − 2 ， j n − 1 − 2 C i − 1 ， j n − 1 + C i j n − 1 | ≤ | C i + 1 ， j n − 1 − 2 C i j n − 1 + C i − 1 ， j n − 1 | 时，得 C ¯ i j n − 1 = C i j n − 1 + C i j n − 1 − C i − 1 ， j n − 1 h ( x ¯ i − x i ) + C i j n − 1 − 2 C i − 1 ， j n − 1 + C i − 2 ， j n − 1 2 h 2 ( x ¯ i − x i − 1 ) ( x ¯ i − x i ) = [ 1 + 1 h ( x ¯ i − x i ) + 1 2 h 2 ( x ¯ i − x i − 1 ) ( x ¯ i − x i ) ] C i j n − 1 + 1 2 h 2 ( x ¯ i − x i − 1 ) ( x ¯ i − x i ) C i − 2 ， j n − 1     − [ 1 h ( x ¯ i − x i ) + 1 h 2 ( x ¯ i − x i − 1 ) ( x ¯ i − x i ) ] C i − 1 ， j n − 1 = ( 1 − 1 h u 1 Δ t + 1 2 h 2 ( h − u 1 Δ t ) ( − u 1 Δ t ) ) C i j n − 1 + ( h − u 1 Δ t ) ( − u 1 Δ t ) 2 h 2 C i − 2 ， j n − 1     − ( − 1 h u 1 Δ t + ( h − u 1 Δ t ) ( − u 1 Δ t ) h 2 ) C i − 1 ， j n − 1 (3.9) C ˜ i j n − 1 = C i j n − 1 + C i j n − 1 − C i − 1 ， j n − 1 h ( x ˜ i − x i ) + C i j n − 1 − 2 C i − 1 ， j n − 1 + C i − 2 ， j n − 1 2 h 2 ( x ˜ i − x i − 1 ) ( x ˜ i − x i ) 由上式计算可得，当 x ˜ i + = x ¯ i + δ 1 时， C ˜ i j n − 1 ， + = ( 1 + k 2 + k 1 2 ) C i j n − 1 + k 1 2 C i − 2 ， j n − 1 − ( k 1 + k 2 ) C i − 1 ， j n − 1 . 当 x ˜ i − = x ¯ i − δ 1 时， C ˜ i j n − 1 ， − = ( 1 + k 4 + k 3 2 ) C i j n − 1 + k 3 2 C i − 2 ， j n − 1 − ( k 3 + k 4 ) C i − 1 ， j n − 1 . 当 R n − 1 > R ¯ n − 1 时， C ˜ i j n − 1 = max ( C ˜ i j n − 1 ， + ， C ˜ i j n − 1 ， − ) 当 R n − 1 ≤ R ¯ n − 1 时， C ˜ i j n − 1 = min ( C ˜ i j n − 1 ， + ， C ˜ i j n − 1 ， − ) 2) 当 u 1 为负数时，利用牛顿插值， p 1 = 1 h 2 ( − h − u 1 Δ t + δ 1 ) ( − u 1 Δ t + δ 1 ) ， p 2 = 1 h ( − u 1 Δ t + δ 1 ) ， p 3 = 1 h 2 ( − h − u 1 Δ t − δ 1 ) ( − u 1 Δ t − δ 1 ) ， p 4 = 1 h ( − u 1 Δ t − δ 1 ) (2-1) | C i − 1 ， j n − 1 − 2 C i j n − 1 + C i + 1 ， j n − 1 | > | C i j n − 1 − 2 C i + 1 ， j n − 1 + C i + 2 ， j n − 1 | 时，得 C ¯ i j n − 1 = C i j n − 1 + C i j n − 1 − C i + 1 ， j n − 1 − h ( x ¯ i − x i ) + C i j n − 1 − 2 C i + 1 ， j n − 1 + C i + 2 ， j n − 1 2 h 2 ( x ¯ i − x i ) ( x ¯ i − x i + 1 ) = ( − h − u 1 Δ t ) ( − u 1 Δ t ) 2 h 2 C i + 2 ， j n − 1 + ( 1 + 1 h u 1 Δ t + 1 2 h 2 ( − h − u 1 Δ t ) ( − u 1 Δ t ) ) C i j n − 1     + ( − 1 h u 1 Δ t − ( − h − u 1 Δ t ) ( − u 1 Δ t ) h 2 ) C i + 1 ， j n − 1 C ¯ i j n − 1 = C i j n − 1 + C i j n − 1 − C i + 1 ， j n − 1 − h ( x ˜ i − x i ) + C i j n − 1 − 2 C i + 1 ， j n − 1 + C i + 2 ， j n − 1 2 h 2 ( x ˜ i − x i ) ( x ˜ i − x i + 1 ) = 1 2 h 2 ( x ˜ i − x i ) ( x ˜ i − x i + 1 ) C i + 2 ， j n − 1 + [ 1 − 1 h ( x ˜ i − x i ) + 1 2 h 2 ( x ˜ i − x i ) ( x ˜ i − x i + 1 ) ] C i j n − 1     + [ 1 h ( x ˜ i − x i ) − 1 h 2 ( x ˜ i − x i ) ( x ˜ i − x i + 1 ) ] C i + 1 ， j n − 1 由上式计算可得，当 x ˜ i + = x ¯ i + δ 1 时， C ˜ i j n − 1 ， + = ( 1 + p 2 + p 1 2 ) C i j n − 1 + p 1 2 C i + 2 ， j n − 1 + ( p 2 − p 1 ) C i + 1 ， j n − 1 . 当 x ˜ i − = x ¯ i − δ 1 时， C ˜ i j n − 1 ， − = ( 1 + p 4 + p 3 2 ) C i j n − 1 + p 3 2 C i + 2 ， j n − 1 + ( p 4 − p 3 ) C i + 1 ， j n − 1 . 当 R n − 1 > R ¯ n − 1 时， C ˜ i j n − 1 = max { C ˜ i j n − 1 ， + ， C ˜ i j n − 1 ， − } ， R n − 1 ≤ R ¯ n − 1 时， C ˜ i j n − 1 = min { C ˜ i j n − 1 ， + ， C ˜ i j n − 1 ， − } (2-2) | C i − 1 ， j n − 1 − 2 C i j n − 1 + C i + 1 ， j n − 1 | ≤ | C i j n − 1 − 2 C i + 1 ， j n − 1 + C i + 2 ， j n − 1 | 时，得 C ¯ i j n − 1 = C i j n − 1 + C i j n − 1 − C i + 1 ， j n − 1 − h ( x ¯ i − x i ) + C i − 1 j n − 1 − 2 C i ， j n − 1 + C i + 1 ， j n − 1 2 h 2 ( x ¯ i − x i ) ( x ¯ i − x i + 1 ) = ( 1 + 1 h u 1 Δ t + 1 h 2 ( − h − u 1 Δ t ) ( − u 1 Δ t ) ) C i j n − 1 + ( − h − u 1 Δ t ) ( − u 1 Δ t ) 2 h 2 C i − 1 ， j n − 1     + ( − 1 h u 1 Δ t + ( − h − u 1 Δ t ) ( − u 1 Δ t ) 2 h 2 ) C i + 1 ， j n − 1 C ˜ i j n − 1 = C i j n − 1 + C i j n − 1 − C i + 1 ， j n − 1 − h ( x ˜ i − x i ) + C i − 1 ， j n − 1 − 2 C i j n − 1 + C i + 1 ， j n − 1 2 h 2 ( x ˜ i − x i ) ( x ˜ i − x i + 1 ) = [ 1 − 1 h ( x ˜ i − x i ) + 1 h 2 ( x ˜ i − x i ) ( x ˜ i − x i + 1 ) ] C i j n − 1 + 1 2 h 2 ( x ˜ i − x i ) ( x ˜ i − x i + 1 ) C i − 1 ， j n − 1     + [ 1 h ( x ˜ i − x i ) + 1 2 h 2 ( x ˜ i − x i ) ( x ˜ i − x i + 1 ) ] C i + 1 ， j n − 1 计算可得，当 x ˜ i + = x ¯ i + δ 1 时， C ˜ i j n − 1 ， + = ( 1 − p 2 + p 1 ) C i j n − 1 + p 1 2 C i − 1 ， j n − 1 + ( p 2 + p 1 2 ) C i + 1 ， j n − 1 . 当 x ˜ i − = x ¯ i − δ 1 时， C ˜ i j n − 1 ， − = ( 1 − p 4 + p 3 ) C i j n − 1 + p 3 2 C i − 1 ， j n − 1 + ( p 4 + p 3 2 ) C i + 1 ， j n − 1 . 当 R n − 1 > R ¯ n − 1 时， C ˜ i j n − 1 = max { C ˜ i j n − 1 ， + ， C ˜ i j n − 1 ， − } ， R n − 1 ≤ R ¯ n − 1 时， C ˜ i j n − 1 = min { C ˜ i j n − 1 ， + ， C ˜ i j n − 1 ， − } 。 同理，可得沿y方向。