動機
有限要素法に関する記事の多くは、ポアソン方程式を取り上げています。
二次元を扱う場合、要素分割は大抵、三角形一次要素か四角形要素であることが多く、三角形二次要素にフォーカスされたものはそれほど多くないです。
そのため、この記事では三角形二次要素を用いてポアソン方程式を解く方法を導出していこうかと思います。
今回は三角形要素に分割して局所座標系に変換するところまでやろうと思います。
次の記事→(その2)
ポアソン方程式
∇2u=f(x,y)ΓD:u(x,y)=uD(x,y), ΓN:∂u∂n=q(x,y)
ΓD,ΓNはそれぞれディリクレ境界とノイマン境界を表しています。
なお、以下、領域はΩで表すものとします。
例えば、こんな感じです。
Ω={(x,y)|0≤x≤1, 0≤y≤1}ΓD={(x,y)|0≤x≤1, y=0,1}ΓN={(x,y)|x=0,1, 0≤y≤1}uD(x,y)=0, q(x,y)=0
弱形式化
uの近似関数をu^とすると、残差R(x,y)は、
R(x,y)=∇2u^−f(x,y)
と表せる。
これに任意の重み関数w(x,y)を乗じたものを領域Ω全体で積分したものが0となるような近似関数u^を求めてるのです。
つまり、
∫ΩR(x,y)w(x,y)dΩ=∫Ω[∇2u^−f(x,y)]w(x,y)dΩ=0
となる、近似関数u^を求めたいのです。
TODO
ここで、部分積分や、ガウスの発散定理を用いると、以下のようになります。
∫Ω[∇2u^−f(x,y)]w(x,y)dΩ=∫Ω[−∇u^T∇w(x,y)−f(x,y)w(x,y)]dΩ+∫Γ[∂u^∂nw(x,y)]dΓ=0
すなわち、
∫Ω∇u^T∇w(x,y)dΩ+∫Ωf(x,y)w(x,y)dΩ=∫Γ[∂u^∂nw(x,y)]dΓ
重み関数はディリクレ境界ΓDで0となるようにとります。すると、
∫Ω∇u^T∇w(x,y)dΩ+∫Ωf(x,y)w(x,y)dΩ=∫Γ[∂u^∂nw(x,y)]dΓ=∫ΓNq(x,y)w(x,y)dΓ
要素分割
領域で積分しているところは要素単位で、境界部分は辺単位で分割していきます。
要素が、e=1,2,⋯、境界の辺が、l=1,2,⋯あるとすると、
∑e=1[∫Ωe∇u^T∇w(x,y)dΩ+∫Ωef(x,y)w(x,y)dΩ]=∑l=1∫ΓNlq(x,y)w(x,y)dΓ
三角形に分割するのであればこんな具合に、

離散化
要素内での関数、u^e(x,y),fe(x,y)を離散化していきます。
u^e(x,y)fe(x,y)=ueiϕi(x,y)=feiϕi(x,y)
uei,feiなどは要素e内のi番目の特定の点(節点という)での値で、ϕi(x,y)などは内挿関数、もしくは形状関数と言われるものです。
つまり、要素内のある物理量の分布を、節点での値と内挿関数の内積であらわしているのです。
また、境界部分(左辺)に関しては辺上で同じく形状関数ψiを導入します。
q(x,y)=qiψi(x,y)
ガラーキン法
ガラーキン法は重み関数を、求めたい物理量と同じ内挿関数の線形結合で表す方法である。
要素内では
w(x,y)=weiϕi(x,y)
境界上では
w(x,y)=weiψi(x,y)
要素分割し、離散化された方程式
∑e=1[wejuiKe+wejfe]=∑l=1wejqei∫ΓNlψeiψejdΓKe=∫Ωe∇ϕei∇ϕejdΩ, fe=fei∫ΩeϕeiϕejdΩ
以降、具体的な要素分割を考えていきます。
三角形二次要素
以下の図のような要素を考える。

全体座標系から局所座標系へ
これから行っていく積分等の演算を楽にしていくために一つ一つの要素に変換をかけていきます。

要素内の任意の点xeは以下のようにして表せます。
xe=ξ(xe2−xe1)+η(xe3−xe1)+xe1=[xe2−xe1xe3−xe1][ξη]−xe1
Je|Je|=⎛⎝∂x∂ξ∂y∂ξ∂x∂η∂y∂η⎞⎠=(xe2−xe1ye2−ye1xe3−xe1ye3−ye1)=∣∣∣xe2−xe1ye2−ye1xe3−xe1ye3−ye1∣∣∣=(xe2−xe1)(ye3−ye1)−(xe3−xe1)(ye2−ye1)
ヤコビアンが定数になってくれるので非常にありがたい.
しかし、めんどくさいのはここからです。
∇=(∂∂x,∂∂y)=(∂ξ∂x∂∂ξ+∂η∂x∂∂η,∂ξ∂y∂∂ξ+∂η∂y∂∂η)=⎛⎝∂ξ∂x∂ξ∂y∂η∂x∂η∂y⎞⎠⎛⎝∂∂ξ∂∂η⎞⎠
そして、先程はx,yからξ,ηを求めていましたがそれの逆を行います。
(ξη)=J−1e(xe−xe1)
これを用いると、ナブラをξ,ηの偏微分で表そうとしたときに出てきた行列部分をヤコビアンを用いて表せます。
⎛⎝∂ξ∂x∂ξ∂y∂η∂x∂η∂y⎞⎠=(J−1e)T
であるから、
Ke=∫Ωe∇ϕei∇ϕejdΩ=∫Ωe⎛⎝⎜⎛⎝∂ξ∂x∂ξ∂y∂η∂x∂η∂y⎞⎠⎛⎝⎜∂ϕei∂ξ∂ϕei∂η⎞⎠⎟⎞⎠⎟T⎛⎝⎜⎛⎝∂ξ∂x∂ξ∂y∂η∂x∂η∂y⎞⎠⎛⎝⎜∂ϕej∂ξ∂ϕej∂η⎞⎠⎟⎞⎠⎟|Je|dΩ=∫Ωe(∂ϕei∂ξ∂ϕei∂η)⎛⎝∂ξ∂x∂ξ∂y∂η∂x∂η∂y⎞⎠T⎛⎝∂ξ∂x∂ξ∂y∂η∂x∂η∂y⎞⎠⎛⎝⎜∂ϕej∂ξ∂ϕej∂η⎞⎠⎟|Je|dΩ=∫Ωe(∂ϕei∂ξ∂ϕei∂η)J−1e(J−1e)T⎛⎝⎜∂ϕej∂ξ∂ϕej∂η⎞⎠⎟|Je|dΩ
ここで、
J−1e(J−1e)T|Je|=(acbd)
とすれば、
Ke=a∫Ωe∂ϕei∂ξ∂ϕej∂ξdΩ+b∫Ωe∂ϕei∂ξ∂ϕej∂ηdΩ+c∫Ωe∂ϕei∂η∂ϕej∂ξdΩ+d∫Ωe∂ϕei∂η∂ϕej∂ηdΩ
a,b,c,dはヤコビアンが節点の座標から求まるのでそこから計算します。
その2では、内挿関数を求めてKe,feを求めていきますが、その下準備が完了しました。
参考文献
偏微分方程式の数値解法 / 神谷紀生, 北栄輔著 東京 : 共立出版, 1998.3
コメント