シミュレーションのメッシュとは?自作でメッシュの作り方

プログラム
Pocket

シミュレーションでメッシュは必須

シミュレーションでメッシュを切る、という言葉をよく聞くと思います。

現在、シミュレーション解析の主流は有限要素法、有限差分法です。この2つの手法はメッシュを切らないと解析できません。

メッシュを切らない手法として、粒子法という手法がありますが、この手法が主流になるにはもう少し時間が掛かるかなと思います。

メッシュとはどんなものかと言うと、下の画像のように四角形の格子状になっているものです。

他にも三角形状のものもあります。

メッシュで注目するのは節点である

シミュレーションで注目するのはどこだと思いますか?

シミュレーションを知らない人は色に注目すると思われます。

下の画像のように色がついていると分かりやすく、そこばかりに目が入ってしまいます。

しかし、シミュレーションを扱う人は色に注目してはいけませんよ。

注目すべきは下の画像のように四角形を形成している節点です。

シミュレーションは節点(座標)の情報を手に入れるための方法だと思ってください。

色は後付けで行っているものだと思ってください、エンジニアはこれに騙されてはいけないですよ。

後付けとはどういうことかというと例えば、一番上の四角形は1,2,22,23の節点で出来ていますよね。この四角形の色は4つの節点の値を平均してその値に対して色を付ける感じです。

どういう風に処理するかはエンジニアやソフトの趣味なので幾らでも偽装できてしまうのですよ。

だから、節点が一番注目すべき点になります。

つまり、節点座標を作るプログラムを作ることが、シミュレーションでメッシュを作るプログラムになるわけです。

直線のメッシュ(直行メッシュ)を作るのは簡単

早速メッシュを作っていくのですが、四角形のメッシュを作るのは簡単です。

中学生の数学が理解できているなら、速攻で理解できると思います。

座標をプロットする関数をあなたなら知っているはずです。

そう、y=axです。これをプログラミング出来る形に直したのが、メッシュを切るという事です。

もっと条件を簡単にしてプログラミング出来る形に変換してみましょう。x軸と平行の座標をプロットする式はy = x。

そしてメッシュを切る形にすると、y = Δxとなります。Δは節点の間隔です。0.5の間隔で節点を打ちたいなら0.5、0.001間隔なら0.001を入力します。

上の例は1次元だけのメッシュを切る方法(正確にはメッシュではない)です。これと同じ考えをもう1次元増やすプログラムを作れば2次元のメッシュが完成です。

実際にプログラムを作ってみよう(有限差分法)

実際にメッシュを切るプログラムを作ってみます。

2次元のメッシュを切るプログラムは以下のようになります。

プログラム

C———————————————— Global Variable —–
REAL*4 X_T(ISSS:IEEE,JSSS:JEEE) !— Position X-component
REAL*4 Y_T(ISSS:IEEE,JSSS:JEEE) !— Position Y-component
REAL*4 T(ISSS:IEEE,JSSS:JEEE) !— Thermal
REAL*4 T0 (ISSS:IEEE,JSSS:JEEE) !— Temperature for Meomory
REAL*4 T1 !— Upeer Temperature
REAL*4 T2 !— Left Temperature
REAL*4 T3 !— Bottom Temperature
C———————————————————————-

C
INTEGER I0, I1, J0, J1 ,N0 ,N1 !— Mesh Size
INTEGER S0, S1 !— Mesh Size

DO J = J0, J1
DO I = I0, I1
X_T(I,J) = 0.5 * REAL(I)
Y_T(I,J) = 0.5 * REAL(J)
END DO
END DO

です。メッシュをきるプログラムはこれだけです。

これを理解するにはdo 文、C言語ならfor文が必要となります。

理解している前提で説明すると、do文で作られる最初の座表はJ0=0,I0=0だとすると

X_T(0,0) = 0.5 * 0=0
Y_T(0,0) = 0.5 * 0=0

つまり、原点の節点が出来ます。

次に表される座標は

X_T(1,0) = 0.5 * 1=0.5
Y_T(1,0) = 0.5 * 0=0

なので、(0.5,0)の座標が出来るわけです。

これを繰り返し計算させていくことで、メッシュを作っていきます。

自作メッシュに熱伝導方程式を入れてみた

自作で作ったメッシュに熱伝導方程式を入れて計算しました。

結果は下の画像です。

結果の可視化にはmicro-AVSを使用しています。

そして筆者が計算したのは節点に値する場所だけです。なのにこの美しさで可視化できるのですから、エンジニアなら色だけで解析結果をみてはいけない事が分かったと思います。

まとめ

メッシュを作るプログラムは簡単に出来ます。

しかし、メッシュを寄せて作るなどをしたい場合は、高校数学を理解しないといけません。

等比数列等々を駆使します。

しかし、仕事するかやその専門であるドクターに行かない限り、複雑なメッシュを作ることはないと思います。

まずは、直線メッシュを作ってみてください。
終わり


関連記事

Fortran基本プログラムを1行ずつ解説、do文について