Skip to content

19.5.3 有限元方法 (FEM)

在现代计算机出现后, 有限元方法成为求解偏微分方程的最重要的技术. 也容易说明这种强有力的方法产生的结果.

对于不同类型的应用, 有限元方法有很不相同的实施方式, 故这里仅介绍其基本思想. 它类似于数值求解常微分方程边值问题的里茨法 (参见第 1266 页 19.4.2.2), 也涉及样条插值 (参见第 1293 页 19.7).

有限元方法有如下步骤.

1. 定义变分问题

由已知边值问题形成变分问题. 以如下边值问题为例说明其过程:

G 的内部 Δu=uxx+uyy=f ,在 G 的边界上 u=0 .(19.144)

在微分方程 (19.144) 两边乘以在 G 的边界为零的适当的光滑函数,并在整个区域 G 上积分,得到

(19.145)(G)(2ux2+2uy2)vdxdy=(G)fvdxdy.

应用高斯求积公式 (参见第 945 页 13.2.2.1,(2)),将 P(x,y)=vuy,Q(x,y)=vux 代入 (13.121), 从 (19.145) 得到变分方程

(19.146a)a(u,v)=b(v)

其中

(19.146b)a(u,v)=(G)(uxvx+uyvy)dxdy,b(v)=(G)fvdxdy.

2. 三角形剖分

将积分区域 G 分解为简单的子区域,一般用三角形剖分,即区域 G 被三角形覆盖, 且其中相邻的三角形或共有整条边, 或仅有一个公共顶点. 每个带曲线边界的区域可由三角形的联合很好地逼近 (图 19.7).

01937d01-b6f6-7881-8294-3a9c82211946_39_531_694_577_487_0.jpg

注 为避免数值上的困难, 三角形剖分中应该不包含钝角三角形.

单位正方形的三角形剖分见图 19.8. 从坐标为 xμ=μh,yν=νh(μ,ν=0,1 , 2,,N;h=1/N) 的网格剖分节点出发,有 (N1)2 个内节点. 考虑到选取解函数,常用以 (xμ,yν) 为公共顶点的六个三角形组合成的面元 Gμν (在其他的情况下, 三角形可能不是 6 个. 这些面元显然互不排斥).

01937d01-b6f6-7881-8294-3a9c82211946_39_562_1573_515_470_0.jpg

3. 求解

对所求的函数 u(x,y) 在每一个三角形上定义假设的近似解. 带相应假设解的三角形称为有限元. xy 的多项式是最合适的选择. 在许多情况下,线性近似

(19.147)u~(x,y)=a1+a2x+a3y

已经足够. 假设近似函数在相邻三角形间必须连续, 故最终的解也是连续的.

(19.147) 中的系数 a1,a2,a3 由在三角形顶点上的函数值 u1,u2,u3 唯一确定. 这同时保证了相邻三角形间的连续性. 假设解 (19.147) 包含了作为未知参数的要求函数的近似值 ui . 在整个区域 G 上用来逼近要求的解 u(x,y) 的假设解选为

(19.148)u~(x,y)=μ=1N1ν=1N1αμνuμν(x,y).

确定适当的系数 αμν . 对函数 uμν(x,y) 必须成立: 根据 (19.147),它们在 Gμν 的每一个三角形上是满足下面条件的线性函数:

(1)

(19.149a)uμν(xk,yl)={1,k=μ,l=ν,0, 其他. 

(2)

(19.149b)uμν(x,y)0,对任意(x,y)Gμν.

uμν(x,y)Gμν 上的图形表示见图 19.9. 在 Gμν 上,即在图 19.8 中从 1 到 6 所有的三角形上,计算 uμν(x,y) . 这里仅说明三角形 1 上的计算:

(19.150)uμν(x,y)=a1+a2x+a3,

01937d01-b6f6-7881-8294-3a9c82211946_40_480_1417_682_517_0.jpg

满足

(19.151)uμν(x,y)={1,x=xμ,y=yv,0,x=xμ1,y=yv1,0,x=xμ,y=yv1.

由 (19.151) 得 a1=1v,a2=0,a3=1/h ,随之对三角形 1 有

(19.152)uμν(x,y)=1+(yhv).

类似有

(19.153)uμν(x,y)={1(xhμ)+(yhv), 三角形 2,1(xhμ), 三角形 3,1(yhv), 三角形 4,1+(xhμ)+(yhv), 三角形 5,1+(xhμ), 三角形 6.

4. 计算解的系数

解的系数 αμν 由解 (19.148) 对每个解函数 uμν 都满足变分问题 (19.146a) 来确定,即在 (19.146a) 中用 u~(x,y) 代替 u(x,y) ,用 uμν(x,y) 代替 v(x,y) . 于是得到关于未知系数的线性方程组

(19.154)μ=1N1ν=1N1αμνa(uμν,ukl)=b(ukl)(k,l=1,2,,N1),

其中

a(uμν,ukl)=Gkl(uμνxuklx+uμνyukly)dxdy,b(ukl)=Gklfukldxdy.

(19.155)

在计算 a(uμν,ukl) 时,必须记住仅需计算区域 GμνGkl 具有非空交集情况下的积分. 这些区域在表 19.1 中用阴影表示.

因总是在面积为 h2/2 的三角形区域上积分,故关于变量 x 的偏导数为

(19.156a)1h2(4αkl2αk+1,l2αk1,l)h22.

类似得到关于变量 y 的偏导数

(19.156b)1h2(4αkl2αk,l+12αk,l1)h22.

计算 (19.154) 的右端项 b(ukl)

(19.157a)b(ukl)=Gklf(x,y)ukl(x,y)dxdyfklVP,

其中 VP 为由 ukl(x,y) 确定的 Gkl 上高度为 1 的棱锥的体积 (图 19.9). 因为

(19.157b)VP=13612h2,故其近似值为b(ukl)fklh2.

于是变分方程 (19.154) 导致确定解系数的线性方程组

表 19.1 有限元法附表

面域

图示

三角形

uklx

uμνx

uklxuμνx

GklGμν

(1) μ=kν=l

11

0

0

4h2

22

1/h

1/h

33

1/h

1/h

44

0

0

55

1/h

1/h

6

1/h

1/h

0

(2) μ=kν=l1

1524

0

1/h


1/h

0

(3) μ=k+1ν=l

2635

1/h

1/h

2h2

1/h

1/h

0

(4) μ=k+1ν=l+1

1/h

0

3146

0

1/h

(5) μ=kν=l+1

4251

0

1/h

0

1/h

0

(6) μ=k1ν=l

5362

1/h

1/h

2h2

1/h

1/h

0

1/h

0

(7) μ=k1ν=l1

6413

0

1/h


4αklαk+1,lαk1,lαk,l+1αk,l1=h2fkl(k,l=1,2,,N1).(19.158)

(19.158)

注 (1) 若解的系数可由 (19.158) 确定,则由 (19.148) 得到的 u~(x,y) 表示其显式近似解,可对 G 上任意点计算其值.

(2)若积分区域必须被不规则的三角形网格覆盖, 则要引入三角形坐标 (也称重心坐标). 这样容易确定点关于三角形网格的位置, 又因为每个三角形容易变换为以 (0,0),(0,1),(1,0) 为顶点的单位三角形,从而使得 (19.155) 中多重积分的计算更容易.

(3) 若需要改善解的精度或可微性, 则必须应用分片二次或三次函数以得到假设的近似 (见 [19.28]).

(4) 在实际应用中, 通常得到高维的线性方程组. 这正是发展许多特殊方法的原因, 例如, 方程组的结构依赖于三角形网格的自动剖分和单元的实际列举. 关于有限元方法的详细介绍见 [19.21], [19.13], [19.28].

version 1.24.0