有限要素法入門comfos.org/jp/fracture/notes/fem.pdfmicrosoft word - fem author ohtsuka created...
TRANSCRIPT
大塚 厚二
広島国際学院大学 情報学部
有限要素法入門
三角形分割 領域の閉包が三角形の集合 J
jj 1K で,次の性質(T1)~
(T3)をもつとき,集合 , ,h j j 1 JT K
が領域の三角形分割
(T1) ,i j hK K T に対して,i j ならば i jK K は,空集合か,
三角形の辺の全体か,または 1 点となる。
(T2) 境界 上の折れ曲がり点は,三角形 hK T の頂点 (T3) max diam
hK T0 h K 。ここで, diam K は,三角形
hK T の辺の最大長。
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 個
,
j
, ,...,
x =cos , ,
=sin ,
j j
j
x y j 0 10
0 2j
y 0 2j
内部へ Delaunay 分割
領域の定義�
領域の境界 Jjj 1 : j は区分的に滑らかな曲線
, ,, : , ,j 1j 2 j j jx y x t y t a t b
各 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) 領域,その三角形分割 , ,h k k 1 M
T T が与えられている。
nkP T : kT 上の n 次多項式の造る集合
FreeFem++は命令
fespace , nh hV PT ;
で n 次多項式連続要素を生成する。
, : ,n 0h h h 1 1 D D iV P v C v v v v T
ここで,各 k hT T に対し k
ni kT
P T で,添え字Dは,次数 n
によって変化する自由度(Degree of Freedom)を表す。
, 1h hV PT 線形近似空間(1次)�
, , ,kvq k 1 n :節点で,nv を節点の総数。D= nv
要素関数は, kj ikq を満たす。
1.00
1.00
1.003
6
1
11
14
11
図 1 hT =buildmesh(C(10)) での 4 の形
要素関数の作成方法�
要素関数の作成では,面積座標(重心座標)を使う。
1kq 2kq
3kq
A3
A1A2
L3=0
L1=0L2=0
P
三角形要素 kT 内点 , ,1 2 3P P L L L の面積座標は,
, ,1 1 2 2 3 3L A A L A A L A A
, , ,1 2 3A A A A はそれぞれ全体,3つに分割された三角形の面積
,
, ,i i i i
i j k k j i j k i j k
L x y a b x c y
a x y x y D b y y D c x x D
ここで ,x y は点 , , ,kq 12 3 の座標で, , ,i j k は , ,12 3 の偶置
換 , , , , , , , , , , , , , ,i j k 12 3 i j k 2 3 1 i j k 3 12 を示し,
1 1
2 2
3 3
1 x y
D 2A 1 x y
1 x y
一次連続要素関数�Vh(Th,P1)
qi
TkTk
n ikiq q
, , otherwise
,
in ik
n i n i n i n i
i kq T
k k k k k
1x y L x y 0
2S
L x y D a b x c y
S は節点 iq を含む三角形の面積の総和。
2次 Lagrange�要素 Vh(Th,P2)
Tk Tk
1kq
2kq
3kq
6kq
4kq5kq
qi qj
, ,
, , , otherwise
, , , otherwise
in i n ik
jk
i k kq T
j k lq T j k l
1x y L x y 2L x y 1 0
2S
2x y L x y L x y 0
S
,S Sはそれぞれ,節点 iq ,中点 jqを含む三角形の面積の総和。
不連続要素 ,h hV P0T : 各三角形要素 kT に対し,
if ; if k k k kx 1 x T x x x T
,h hV P1ncT : 各三角形要素 kT に対し,
, ,
otherwise
in ik
i k kq T
1x y D L x y
2S
0
,
n j n j 1
j
k k
i ij jq q
m m2
Tk
3mq
1mq2mq
有限要素空間への射影�
: 関数 ,f x y の有限要素空間 hV への射影
P0:
, , ,1 2 3
tk k k
n
k k kk 1
f q f q f qf x y f x y f
3
P1nc: , , ,vn
i i i ii 1
f x y f x y f f m
P1: , , ,vn
ii i i
i 1
f x y f x y f f q
P2: , , , , ,v vn n
i ii i j j i j
i 1 j 1
f x y f x y f x y f f q f f m
Poisson�方程式�
弱形式
u v fv
の左辺に未知関数v vh 1 1 n nu u u , iu を,右辺に
j を代入すると,連立方程式
vn
i i j ji 1
u f
を得る。 ,l lhu q 0 q とするため
if or ,
if ,
ii j
ji1 i
i j i jqA
i jq
, if ll l ij j l l
l j
u F A u 0 F f q
こ の 方 法 の 利 点 は , 非 斉 次 問 題 u g on で も
, , 1 ll l ij j l l l l l
l j
u F A u g F F g g g q
のように簡単な修正で解くことが出来る。
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); // [] , if else 1 j
j jbc bc bc q 0
F[] = F[] + bc[].*g[]; // if 1 ll l lF F g q
// bc[].*g[] j jbc g 成分同士の積
u[] = A^-1*F[];
正則な三角形分割列�
(1) lim max diam ;k k hh 0
T T 0
T
ここで,diam kT は,三角形の辺の最大長。
(2) ある定数 0 が存在し
,diam
kk h
k
TT h
T
T
ここで, kT は三角形に内接する円の直径。
Ceaの補題�
aを強圧的連続双 1 次形式とする。このとき,
infh h
h hv V
Mu u 1 u v
(田端 p.54,次は p.62 系 2.5)
正則な三角形分割の列 hT に対し,有限要素空間 , kh hV PT ,
d2
k 1 を考える。このとき,任意の ,k 12v W に対し,hに依
存しない定数c 0 が存在し,次が成り立つ。
(1.1) , , , , ,k 1 sh s 2 k 12
v v ch v s 0 1
Poisson 方程式の 1 次要素近似 , , , ,h 12 2 2u u ch u
?
が凸領域なら, ,2 2u W だが,凹んでいるときは駄目。
補完空間 , ,, ,12 2 2W W 0 1
を
, ,, , ,
, : ,12 2 2W W 2
1 22
12
0v W v t K t v dt
で定義する。このとき,
, , ,, ,12 2 2 s 2W W W s 1 1 2
作用素 :h hE u u u は,
,, ,, ,, 2 212 2 12 2h hW L W W L0 0
E 1 E ch
L L
よって,補完定理から
, , , ,12 s 1 20
s 1h W W LE ch s 1
L
角 j なら特異項 , ,j j1 2r W 0 1
となるので,Dirichlet 境界なら
, , , , , max ,h j12 0 2u u ch f 0 1
Poisson 方程式で hf u u ,弱解をwとすると(Aubin-Nitsche)
, ,
, , , ,
h h0 2
h h
h 0 2 0 2
u u w u u
w w u u
ch w w ch f
Adaptive�mesh�法�
, , , , , , k
1 22
h h k12 12 2 2 Tk
u u u u C h u
三角形要素 kT について, minkk x T jd x とすると
j jk
k
2 2 2 2 1di j kT 0u C r rdr C d
となる。そこで, k kh d のとき j1k 0 kh C hd
とすれば,
, ,h 12u u Ch
となる。これは, k の近くでメッシュの細分になる。