(五)、Fealpy 矩阵的组装2
这一节, 我们来介绍一下有限元相关的知识。我们以 Poisson 方程为例:
注意我们的测试函数
u
u
u 在
Γ
D
\Gamma_D
ΓD 上是 0。
于是我们可以给出离散的代数系统
接下来我们来分析边界条件, 若只有 Dirichlet 边界条件, 则有离散代数系统中的形式知
R
=
0
,
b
N
=
b
R
=
0
,
A
u
=
b
.
R=0, b_N=b_R=0, Au=b.
R=0,bN=bR=0,Au=b. 将
u
u
u 进行向量分解
u
=
u
I
(
内
部
自
由
度
)
+
u
D
(
边
界
自
由
度
)
,
u=u_I(内部自由度)+u_D(边界自由度),
u=uI(内部自由度)+uD(边界自由度), 代入
A
u
=
b
Au=b
Au=b 中, 有
A
u
I
=
b
−
A
u
D
≔
F
.
Au_I= b- Au_D\coloneqq F.
AuI=b−AuD:=F.
我们有两种方法求解问题:
- 只求解 u I u_I uI, 但这样会改变原始离散系统的规模;
- 把 F F F 中 Dirichlet 边界自由度对应的分量设真解的值,并把 A A A 中 Dirichlet 边界自由度对应的行列的主对角元素改为 1, 其它元素改为 0。
若只有
N
e
u
m
a
n
n
Neumann
Neumann 边界条件, 仍由之前的离散代数系统,我们有
A
u
=
b
+
b
N
.
Au=b+b_N.
Au=b+bN.
因为Neumann边界条件的解不是唯一的(相差一个常数), 故我们增加一个条件来使其唯一:
∫
Ω
u
d
x
=
0
⇒
∫
Ω
ϕ
u
d
x
=
0
⇒
C
u
=
0
\int_{\Omega}u \,\mathrm{d}\bm{x}=0\Rightarrow \int_{\Omega}\phi\bm{u} \,\mathrm{d}\bm{x}=0\Rightarrow \bm{Cu}=0
∫Ωudx=0⇒∫Ωϕudx=0⇒Cu=0
其中
C
=
[
∫
ϕ
0
,
⋯
,
∫
ϕ
N
−
1
]
\bm{C}=[\int \phi_0,\cdots, \int\phi_{N-1}]
C=[∫ϕ0,⋯,∫ϕN−1] 最终我们要求解
若只有 R o b i n Robin Robin 条件, 直接求解 ( A + R ) u = b + b R (A+R)u=b+b_R (A+R)u=b+bR 即可。
如果是混合边界条件, 则最后应用Dirichlet 便好了。
下一节, 我们将展示刚度矩阵, 质量矩阵的具体组装。