使用稀疏矩阵的狄利克雷边界条件有限差分法A x = bAx=b系统

计算科学 pde 有限差分 并行计算 数值建模
2021-12-23 09:54:01

我正在尝试解决热方程的边界值问题:

uxx+uyy=f(x,y)

其中解和狄利克雷边界条件u(x,y)[0,1]×[0,1]u(x,y)=u0

所以我用步长Nh=1/(N+1)

wi,j1+wi+1,j+wi1,j4wi,j+wi,j+1=h2f(xi,yj)

其中和边界条件为:i,j{1,2,...,N}

w0,j=wN+1,j=u0wi,0=wi,N+1=u0

其中是从i,j1N

我将这个问题简化为稀疏矩阵系统。我知道如何使用 Python 为这个问题唯一的问题是矩阵的 RHS 。对于处的网格点对于的情况,我不知道要检索矩阵我试图用案例写下来,以查看如下一般模式(我按列顺序排列):Abu0=0f(x,y)u00bN=3

在此处输入图像描述

我希望任何人都可以帮助我理解如何在狄利克雷边界条件的一般情况下我为这个问题编写的代码是用 Python 编写的,但我想先了解一下一般性。b

1个回答

一种通用的方法是在的定义中包含边界节点(这将为您提供一个列多于行的矩阵),并将作为 Dirichlet 节点的贡献。这样,很容易包括其他线性项,如对流。Ab

假设矩阵看起来像A

A=[AI|AΓ]

其中是内部的(方形)运算符(正如您在问题中所拥有的那样)以及在哪里AIAΓ是属于边界节点的列。像这样使用列不是问题,但python我宁愿使用索引和切片。

然后b被提取为

b=A[00|u0u0]T=AΓ[u0u0]T.

实际上,您的解决方案如下w=[w1wN2|u0u0]并将解决

Aw=f or AIwI+AΓwΓ=f or AIwI=AΓwΓ+forAIwI=b+f,
在哪里wΓ是您在边界节点处的解决方案。我们曾经在预印本^1中解释了有限元离散化的这种方法,但有限差分的原理是相同的。