本文目录
1. 问题描述
本算例来自B站Up主“Red-Green鲤鱼”的系列教程。本文主要介绍计算代数方程组的三种点迭代方法。
1.1. 泊松方程
含有二阶偏导数的偏微分方程:
∂ 2 ϕ ∂ x 2 + ∂ 2 ϕ ∂ y 2 = f ( x , y ) \frac{\partial^2 \phi}{\partial x^2}+\frac{\partial^2 \phi}{\partial y^2}=f(x,y) ∂x2∂2ϕ+∂y2∂2ϕ=f(x,y)
当 f = 0 f=0 f=0时,上述方程被称为拉普拉斯方程。许多物理过程都可以用泊松方程来描述,如热传导方程
∂ ϕ ∂ t = ∂ 2 ϕ ∂ x 2 + ∂ 2 ϕ ∂ y 2 \frac{\partial \phi}{\partial t}=\frac{\partial^2 \phi}{\partial x^2}+\frac{\partial^2 \phi}{\partial y^2} ∂t∂ϕ=∂x2∂2ϕ+∂y2∂2ϕ
在求解不可压缩流动的NS方程时,通常将已知压力场代入动量方程来预估速度场,然后将预估的速度场代入连续性方程中,由于预估的速度场中包含压力梯度项,因此代入连续性方程后会得到 ∇ ⋅ ( ∇ P ) \nabla \cdot(\nabla P) ∇⋅(∇P),即压力泊松方程
1.2. 算例
令上述泊松方程的源项为如下形式:
f ( x , y ) = − 4 ⋅ s i n ( x − y ) ⋅ e ( x − y ) f(x,y)=-4\cdot sin(x-y)\cdot e^{(x-y)} f(x,y)=−4⋅sin(x−y)⋅e(x−y)
其解析解为
ϕ ( x , y ) = c o s ( x − y ) ⋅ e ( x − y ) \phi(x,y)=cos(x-y)\cdot e^{(x-y)} ϕ(x,y)=cos(x−y)⋅e(x−y)
比较数值解与解析解在定义域 x ∈ [ − 1 , 1 ] , y ∈ [ − 1 , 1 ] x\in [-1,1], y\in [-1,1] x∈[−1,1],y∈[−1,1]上的差别。边界条件为Dirichlet,边界上的值由解析解求出。
2. 区域离散和方程离散
x x x方向设置 N N N个结点,编号从 1 − N 1-N 1−N, y y y方向上设置 M M M个结点,编号从 1 − M 1-M 1−M,结点间距分别为 Δ x \Delta x Δx和 Δ y \Delta y Δy,将 ( i , j ) (i,j) (i,j)号结点记为 P P P,该结点上下左右四个结点分别记为 N , S , W , E N,S,W,E N,S,W,E
采用有限差分法计算泊松方程,二阶偏导数项采用二阶中心差分离散,
∂ 2 ϕ ∂ x 2 ∣ P = ϕ W + ϕ E − 2 ϕ P Δ x 2 \frac{\partial^2 \phi}{\partial x^2}\bigg|_P=\frac{\phi_W+\phi_E-2\phi_P}{\Delta x^2} ∂x2∂2ϕ∣∣∣∣