13

この記事は最終更新日から3年以上が経過しています。

投稿日

更新日

有限要素法による二次元ポアソン方程式の解法(with 三角形二次要素)(その1)

動機

有限要素法に関する記事の多くは、ポアソン方程式を取り上げています。
二次元を扱う場合、要素分割は大抵、三角形一次要素か四角形要素であることが多く、三角形二次要素にフォーカスされたものはそれほど多くないです。
そのため、この記事では三角形二次要素を用いてポアソン方程式を解く方法を導出していこうかと思います。
今回は三角形要素に分割して局所座標系に変換するところまでやろうと思います。

次の記事→(その2

ポアソン方程式

2u=f(x,y)ΓD:u(x,y)=uD(x,y),   ΓN:un=q(x,y)

ΓD,ΓNはそれぞれディリクレ境界とノイマン境界を表しています。

なお、以下、領域はΩで表すものとします。

例えば、こんな感じです。

Ω={(x,y)|0x1,   0y1}ΓD={(x,y)|0x1,   y=0,1}ΓN={(x,y)|x=0,1,   0y1}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^Tw(x,y)f(x,y)w(x,y)]dΩ+Γ[u^nw(x,y)]dΓ=0

すなわち、

Ωu^Tw(x,y)dΩ+Ωf(x,y)w(x,y)dΩ=Γ[u^nw(x,y)]dΓ

重み関数はディリクレ境界ΓDで0となるようにとります。すると、

Ωu^Tw(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[Ωeu^Tw(x,y)dΩ+Ωef(x,y)w(x,y)dΩ]=l=1ΓNlq(x,y)w(x,y)dΓ

三角形に分割するのであればこんな具合に、
triangle.png

離散化

要素内での関数、u^e(x,y),fe(x,y)を離散化していきます。

u^e(x,y)=uieϕi(x,y)fe(x,y)=fieϕi(x,y)

uie,fieなどは要素e内のi番目の特定の点(節点という)での値で、ϕi(x,y)などは内挿関数、もしくは形状関数と言われるものです。
つまり、要素内のある物理量の分布を、節点での値と内挿関数の内積であらわしているのです。

また、境界部分(左辺)に関しては辺上で同じく形状関数ψiを導入します。

q(x,y)=qiψi(x,y)

ガラーキン法

ガラーキン法は重み関数を、求めたい物理量と同じ内挿関数の線形結合で表す方法である。

要素内では

w(x,y)=wieϕi(x,y)

境界上では

w(x,y)=wieψi(x,y)

要素分割し、離散化された方程式

e=1[wjeuiKe+wjefe]=l=1wjeqieΓNlψieψjedΓKe=ΩeϕieϕjedΩ,   fe=fieΩeϕieϕjedΩ

以降、具体的な要素分割を考えていきます。

三角形二次要素

以下の図のような要素を考える。

element.png

全体座標系から局所座標系へ

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

convert.png

要素内の任意の点xeは以下のようにして表せます。

xe=ξ(x2ex1e)+η(x3ex1e)+x1e=[x2ex1ex3ex1e][ξη]x1e
Je=(xξxηyξyη)=(x2ex1ex3ex1ey2ey1ey3ey1e)|Je|=|x2ex1ex3ex1ey2ey1ey3ey1e|=(x2ex1e)(y3ey1e)(x3ex1e)(y2ey1e)

ヤコビアンが定数になってくれるので非常にありがたい.

しかし、めんどくさいのはここからです。

=(x,y)=(ξxξ+ηxη,ξyξ+ηyη)=(ξxηxξyηy)(ξη)

そして、先程はx,yからξ,ηを求めていましたがそれの逆を行います。

(ξη)=Je1(xex1e)

これを用いると、ナブラをξ,ηの偏微分で表そうとしたときに出てきた行列部分をヤコビアンを用いて表せます。

(ξxηxξyηy)=(Je1)T

であるから、

Ke=ΩeϕieϕjedΩ=Ωe((ξxηxξyηy)(ϕieξϕieη))T((ξxηxξyηy)(ϕjeξϕjeη))|Je|dΩ=Ωe(ϕieξϕieη)(ξxηxξyηy)T(ξxηxξyηy)(ϕjeξϕjeη)|Je|dΩ=Ωe(ϕieξϕieη)Je1(Je1)T(ϕjeξϕjeη)|Je|dΩ

ここで、

Je1(Je1)T|Je|=(abcd)

とすれば、

Ke=aΩeϕieξϕjeξdΩ+bΩeϕieξϕjeηdΩ+cΩeϕieηϕjeξdΩ+dΩeϕieηϕjeηdΩ

a,b,c,dはヤコビアンが節点の座標から求まるのでそこから計算します。
その2では、内挿関数を求めてKe,feを求めていきますが、その下準備が完了しました。

参考文献

偏微分方程式の数値解法 / 神谷紀生, 北栄輔著 東京 : 共立出版, 1998.3

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
13