最後に、Source point が、要素4にある場合です。計算されたCは、A44に加算されています。
Source point |
要素番号 | G | F | C | RHS |
---|---|---|---|---|---|
4 | 1 | A41=G | C=F | RHS4=F h1 | |
4 | 2 | A42=-F | C=C+F | RHS4=RHS4 - G*qn2 | |
4 | 3 | A43=G | C=C+F | RHS4=RHS4 + F*h3 | |
4 | 4 | A44=-F | C=C+F | RHS4=RHS4 - G*qn4 | |
4 | A44=A44+C |
以上の操作を行うと、直接[A]{x}={RHS}が出来上がります。理解できましたか。当たり前なことをやっているに過ぎませんが、長い間、境界要素法の技術者は、直接[A]{x}={RHS}を生成することに気付いていませんでした。何べんも言いますが、このことにより計算機のメモリーを節約できるだけでなく、Corner problemも軽減してくれます。
■BEM プログラム: BEM8CONQ.FOR■
結果的に、連立方程式 [A]{X}={RHS} が直接的に出来上がります。ここで説明した計算手順は、BEM8CONQ.FOR の中の Subroutine MTXFORM で行われています。プログラムを見て、計算手順を確認して下さい。
また、プログラムのその他のSubroutines は、BEM8CON.FOR とほぼ同じです。違う点は、BEM8CONQ.FORには、G(I,J) と F(I,J) が有りません。つまり、メモリーを節約したことになります。Input data の並びには変更ありませんので、前のデータで計算してみて下さい。
もう1つBEM8CON.FOR と違う点が有ります。それは、領域内の点でのqxとqyの計算です。BEM8CONQ.FORを見ると、SUBROUTINE INTE2 とSUBROUTINE DOMAIN2 が追加されています。これらは、柴本泰照様に書いて頂きました。柴本様、有難うございました。プログラミングに使われている式の導出については、Discretizationeを参考にしてください。
プログラム BEM8CON.FOR と BEM8CONQ.FOR に共通なことがらですが、DIMENSION の C(MXE) が有ります。しかし、連立方程式 [A]{X}={RHS} を作り上げるのには、Cを配列として保存する必要はありません。これは、[C] の計算結果を出力する目的のために保存しているだけです。[C] を出力している理由は、特にありませんが、Gauss-Legendre 積分の計算精度を評価するのに使えます。もし、領域内の点のCが、C=1.000 に近くない場合は、Gauss-Legendre 積分の sampling points 数を1つ多くすれば良いことになります。
ここで紹介した数値処理については、要素が線形(linear) またはそれ以上になると効果を発揮します。再度、線形要素(linear element) を紹介するところで、この数値処理を復習します。
BACK | NEXT Multiple Domain |
---|
Menu | Fundamentals | Formulation | discretizatione | Example | Straight | Multi-D |