■プログラミングテクニック■
これまでに紹介したプログラムを、簡単に復習してみましょう。一定要素を用いた場合、未知の数と要素の数は一致していました。1次要素の場合は、節点の数と未知の数が同じでした。つまり、プログラミングの時、未知の数が幾つになるか、心配する必要はありませんでした。
Mixed Form 法を用いたプログラムの場合は、どうでしょう。未知の数は、要素や節点の数と一致しません。さらに、Source point の位置も要素の境界条件によって変化します。プログラムでは、以上の事柄を網羅するために、次の変数を用意しています。
変数名 | 最大値 | 目的/意味/内容 | 既設 |
---|---|---|---|
IELTYPE(I) | MXE | 要素の境界条件。 | 一定要素と線形要素 |
NDTYPE(I) | MXN | 節点の境界条件 | 線形要素 |
NOB | Source point の数 | ||
XP(I),YP(I) | MXP | Source point の座標値 | |
IOBTYPE(I) | MXP | 要素の境界条件がDirichlet型だった場合、IOBTYPE(I)へ要素番号を入れる。 要素の境界条件がNeumann型だった場合、IOBTYPE(I)へ(-)節点番号を入れる。 | |
IELSTORE(I) | MXE | マトリクッス[A]=[Aij]のjの値を入れる。 | |
NDSTORE(I) | MXN | マトリクッス[A]=[Aij]のjの値を入れる。 | |
MXN | 節点の数の最大値 | ||
MXE | 要素の数の最大値 | ||
MXP | Source point の数の最大値 |
IOBTYPE(I)は、Source point と1対1の関係にあります。各Source point が、要素上か節点上かが分かります。要素の境界条件がNeumann型だった場合は、IOBTYPE(I)へマイナスの節点番号を入れています。これは、要素番号と区別するためです。
上表のIELSTORE(I)とNDSTORE(I)については、補足説明しましょう。要素毎にG と F を計算します。G は、一定要素上の積分結果ですから、1つです。F は、1次要素上での積分ですから、2つ有ります。これらをマトリックス[A] へ格納することになった場合、[A]=[Aij] の ij を知らなくてはなりません。i は、Source point の番号です。j は、j=IELSTORE(要素番号)、j=NDSTORE(節点番号) で得ることが出来ます。
BACK | NEXT |
---|
Menu | Linear | Corner | Mixedform | Parabolic | Example |