有限要素法入門
大塚 厚二
広島国際学院大学 情報学部
三角形分割
領域 の閉包 が三角形の集合 Jj1K j で,次の性質(T1)~
(T3)をもつとき,集合 Th K j
j1,,J
(T1)
が領域 の三角形分割
K i , K j Th に対して, i jならば K i K jは,空集合か,
三角形の辺の全体か,または 1 点となる。
(T2)
境界 上の折れ曲がり点は,三角形 K Th の頂点
(T3)
0 h max KTh diam K 。ここで, diam K は,三角形
K Th の辺の最大長。
FreeFem++による生成例
領域 が単位円盤
border C(t=0,2) { x=cos(t); y=sin(t); };
mesh Th = buildmesh(a(50));
とすると,次図の三角形分割が生成される。
三角形分割のデータ構造
border C(t=0,2*pi){ x = cos(t); y = sin(t)};
mesh Th = buildmesh(C(10));
赤色: 節点(vertex)番号
青色: 要素(element)番号
円周上に 10 個
x j,yj , j 0,...,10
x j = cos 0, 2j ,
yj= sin 0, 2j
内部へ Delaunay 分割
領域の定義
領域 の境界 Jj1j: jは区分的に滑らかな曲線
j x, y : x 1j, t , y 2,j t ,a j t bj
各j は反時計回りに向き付けられている。穴を開けるときは,
border a(t=0,pi*2){ x = 3*cos(t); y = 2*sin(t)}; //楕円
border b(t=0,2*pi){ x = cos(t); y = sin(t) }; // 内側円
mesh D2 = buildmesh(a(80) + b(-40)) ; // b の方向逆転
有限要素空間(Finite Element Space)
領域 ,その三角形分割 Th Tk k 1,,M が与えられている。
P n Tk : Tk 上の n 次多項式の造る集合
FreeFem++は命令
fespace Vh Th , P n ;
で n 次多項式連続要素を生成する。
Vh Th , P n v C0 h : v v11 vDD, v i
ここで,各 Tk Th に対し i
Tk
P n Tk で,添え字 Dは,次数 n
によって変化する自由度(Degree of Freedom)を表す。
Vh Th , P1
線形近似空間(1 次)
qk , k 1,, n v :節点で,nv を節点の総数。D= nv
要素関数は, j qk ik を満たす。
1.00
1.00
11
1
14
3
1.00
11
6
図 1 Th =buildmesh(C(10)) での 4 の形
要素関数の作成方法
要素関数の作成では,面積座標(重心座標)を使う。
k3
q
P
L2=0
A2
k1
q
A3
L3=0
A1
L1=0
k2
q
三角形要素 Tk 内点P P L1,L 2 ,L 3 の面積座標は,
L1 A1 A ,L 2 A 2 A , L 3 A 3 A
A, A1, A 2 , A3 はそれぞれ全体,3つに分割された三角形の面積
L i x, y a i bi x ci y
a i x jyk x k yj D, bi yj yk D,ci x j x k D
ここで x , y は点qk , 1, 2, 3 の座標で, i, j, k は 1, 2, 3 の偶置
換 i, j, k 1, 2, 3 , i, j, k 2, 3,1 , i, j, k 3,1, 2 を示し,
1 x1
D 2A 1 x 2
1 x3
y1
y2
y3
一次連続要素関数 Vh(Th,P1)
Tk
Tk
i
k n i
q q
qi
1
i x, y
L
x, y otherwise 0
i
k
q
T
n
i
k
2S
b
L
xc
y
x, y D a
k n i
k
k n i
k n i
S は節点qi を含む三角形の面積の総和。
k n i
2 次 Lagrange 要素 Vh(Th,P2)
k3
q
Tk
q
i
k4
qj qk 5
q
Tk
k2
q
qk1
k6
q
1
L
x
y
2L
x, y 1 otherwise 0
i x, y
,
i
k
k
q
T
n
i
n
i
k
2S
2
x, y L
x, y otherwise 0
j x, y qjT , j k,l L
k
l
k
S
S, Sはそれぞれ,節点qi ,中点qjを含む三角形の面積の総和。
不連続要素
Vh Th ,P0 : 各三角形要素 Tk に対し,
k x 1 if x Tk ; k x x if x Tk
Vh Th ,P1nc : 各三角形要素 Tk に対し,
m2
q
Tk
m3
q
1
,
x
y
D
L
x, y
i
k
k
m1 i
q
T
n
i
k
2S
q
otherwise 0
,m
i m
j
ij
j
k n j
q
k n j 1
q
2
有限要素空間への射影
: 関数 f x, y の有限要素空間 Vh への射影
P0: f x, y
nt
fkk x, y, fk
k 1
nv
P1nc: f x, y
P1: f x, y
P2: f x, y
fii x, y, fi
i 1
f qk1 f qk 2 f qk 3
3
f m i
nv
i
f
x
,
y
,
f
f
q
i i
i
i 1
nv
nv
i 1
j1
i
i
f
x
,
y
f
x
,
y
,
f
f
q
,
f
f
m
i i
j j
i
j
Poisson 方程式
弱形式
u v fv
の左辺に未知関数 u h u11 u n v n v , u i を,右辺に
jを代入すると,連立方程式
nv
u i i j fj
i 1
を得る。 u h ql 0,ql とするため
i j if i j or i j,qi
A ji
1 if i j,qi
u l Fl A iju j 0, Fl fl if ql
lj
こ の 方 法 の 利 点 は , 非 斉 次 問 題 u g on で も
u l Fl A iju j gl , Fl Fl 1gl , gl g ql
lj
のように簡単な修正で解くことが出来る。
varf a(u,v) = int2d(Th)(dx(u)*dx(v) + dy(u)*dy(v))
+ on(,u=0);
matrix A = a(Vh,Vh);
// Stiffness matrix
varf b(v,f)= int2d(Th)(v*f);
matrix B = b(Vh,Vh); Vh F;
F[] = B*f[];
u[] = A^-1*F[];
フィルム(薄膜)のシミュレーション
border ball(t=0,2*pi){ x = 125*cos(t); y = 125*sin(t); };
border bottle(t=0,2*pi) { x=27.5*cos(t); y=27.5*sin(t); }
mesh Th = buildmesh(ball(50)+bottle(50));
fespace Vh(Th,P1);
fespace Ph(Th,P0);
Ph reg=region;
Ph f=(0.3/(pi*27.5^2))*(region==reg(0.,0.));
real G = 0.01;
Vh u,v;
problem antiPlane(u,v) =
int2d(Th)( G*(dx(u)*dx(v) + dy(u)*dy(v)) )
- int2d(Th)( -f*v )
+ on(ball,u=0) ;
antiPlane; // 問題はここで,解かれる。
plot (u,value=true,wait=1);
横せん断係数 G が 10gf/mm2 のとき,10mm の沈み。
境界条件 u=g とした剛性行列による解
Vh u,v,ff, bc,g=1;
varf a(u,v) = int2d(Th)( G*(dx(u)*dx(v) + dy(u)*dy(v)) )
+ on(1,u=1) ;
varf b(v,ff) = int2d(Th)(v*ff);
matrix A = a(Vh,Vh);
matrix B = b(Vh,Vh);
ff = -f;
Vh F; F[] = B*ff[];
bc[] = a(0,Vh);
// bc[] bcj, bcj 1 if qj else 0
F[] = F[] + bc[].*g[];
//
Fl Fl 1gl if ql
// bc[].*g[] bcjgj 成分同士の積
u[] = A^-1*F[];
正則な三角形分割列
(1)
lim max diam Tk ; Tk Th 0
h 0
ここで,diam Tk は,三角形の辺の最大長。
(2) ある定数 0 が存在し
Tk
diam Tk
Tk Th ,h
ここで, Tk は三角形に内接する円の直径。
Cea の補題
a を強圧的連続双 1 次形式とする。このとき,
u uh
M
1 inf u vh
vh Vh
(田端 p.54,次は p.62 系 2.5)
正則な三角形分割の列 Th に対し,有限要素空間 Vh Th ,P k ,
,
k 1 d2 を考える。このとき,任意の v W k 12
に対し, h に依
存しない定数c 0 が存在し,次が成り立つ。
(1.1) v h v s,2, ch k 1s v k 12
, ,
Poisson 方程式の 1 次要素近似
u uh
s 0,1
12
, ,
ch u
?
2,2,
が凸領域なら, u W 2,2 だが,凹んでいるときは駄目。
,
2,2
,
W
, 0 1を
補完空間 W 12
,
12
v
W
: v
W 1,2 ,W 2,2 ,2,
12
t K t, v dt
0
2
で定義する。このとき,
,
2,2
s,2
W 12
,
W
W
,s 11 2
作用素Eh : u u u h は,
Eh
, ,L2
L W012
1,
Eh
, W 2,2 ,L2
L W012
ch
よって,補完定理から
Eh
角 j
L
W01,2
W ,L
s,1
2
j
なら特異項 r
s 1
ch
1 j ,2
W
,s 1
,0 1
となるので,Dirichlet 境界なら
u uh
12
, ,
ch
f
0,2,
max j, 0 1
,
Poisson 方程式で f u u h ,弱解を w とすると(Aubin-Nitsche)
u uh
0,2,
w u u h
w wh u u h
ch
w wh
ch
0,2,
f
0,2,
Adaptive mesh 法
u uh
, ,
12
u h u
, ,
12
C hk u
k
12
2
2,2,Tk
三角形要素 Tk について,d k minxTk x j とすると
Tk i ju
2
2 j 1
d k 2 j 2
r
rdr Cd k
0
C
となる。そこで, h k d k のとき h k C0 hd k
u uh
12
, ,
1 j
とすれば,
Ch
となる。これは, k の近くでメッシュの細分になる。
© Copyright 2026 ExpyDoc