1

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

投稿日

更新日

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

いつになったらサンプルコードまでたどり着けるんだろうか...

境界の積分

ノイマン境界条件を処理するために境界でも積分しなければ足りません。

線分要素の局所座標系

bitmap.png

この前と同じように局所座標系に変換していきます。元の要素上の点x=(x,y)と局所座標系における値ζには以下のような関係が成り立ちます。

x=ζ(x2x1)

つまり、その点は線分の端から端までのうちどの辺りに存在するかを[0,1]で表したものとなります。

内挿関数

その局所座標系における内挿関数は以下のように表されます。

ψ1=2(x12)(x1)=2x23x+1ψ2=4x(x1)=4x2+4xψ3=2x(x12)=2x2x

image.png

積分

qilΓNlψilψjldΓ=qil01(4ζ412ζ3+13ζ26ζ+18ζ4+20ζ316ζ2+4ζ4ζ48ζ3+5ζ2ζ8ζ4+20ζ316ζ2+4ζ16ζ432ζ3+16ζ28ζ4+12ζ34ζ24ζ48ζ3+5ζ2ζ8ζ4+12ζ34ζ24ζ44ζ3+ζ2)dζ=(q1q2q3)(215115130115815115130115215)i=1,2,3

以後、これをqlと置きます。

全体の行列作成

もう一度要素に分割した際に導出した方程式を見てみましょう。

e=1[wjeuieKi,je+wjefje]=l=1wjeqjl

そして、方程式を立てる元となっている要素分割の際の図も見てみましょう。
element.png
節点に各要素内の番号と全体の番号が割り当てられていて、要素内の番号(図ではe=3の要素のみ表示)は要素内に1,2,...6といったように割り当てられています。全体の節点の番号は1...17まであります。また、境界要素については、l=1,2,...5まであり、各要素内では1,2,3と番号が割り当てられています(煩雑になるため図には書いていません)。これらのe=1,2,...6の6つの要素で計算されるKe,fel=1,2,...5の5つの境界要素で計算されるqlをまとめて一つの大きな方程式を作りたいのです。つまり、

wTKu=wT(f+q)

としたいのです。
この大きな行列をKの作り方を説明します。
e=3のとき、Keの(1,1)要素であれば、要素内の節点番号1の節点は全体番号では7であるため、Kの(7,7)要素にKeの(1,1)要素を足します。Keの(1,2)要素であれば、要素内の節点番号1の節点は全体番号では7、要素内の節点番号2の節点は全体番号では8であるため、Kの(7,8)要素にKeの(1,2)要素を足します。
これを(1,1)要素から(6,6)要素まで繰り返し行い、更に、e=1からe=6でも同じことをすることでKが完成します。
fqに関しても同様に行います。

また、任意のwに対して

wTKu=wT(f+q)

が成り立つため

Ku=f+q

となり、この連立方程式を解くことでuを求めることができます.

次回、プログラム書きます...
pythonかCかfortran03かRustで書こうかなと...
ようやくqiitaらしく...

参考文献

偏微分方程式の数値解法 / 神谷紀生, 北栄輔著 東京 : 共立出版, 1998.3 (三角形一次要素を使った解法がのっています)

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

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

コメント

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