【科学技術計算講座5-1】粒子法(SPH法)とは

はじめに

少し時間が空いてしまいましたが、科学技術計算講座の第5回目のシリーズを開催したいと思います。

今回の講座のテーマは「粒子法(SPH法)で流体シミュレーション」です。これまでのシリーズでは、Pythonでプログラミングを行ってきましたが、今回はJavaScriptというプログラミング言語を使って可視化(ビジュアリゼーション)を含めて流体の数値計算を行ってみましょう。

流体シミュレーション

早速ですが、今回のシリーズで作成するシミュレーションの完成形を示しておきましょう。今回は粒子法(SPH法)という手法を使って、液体の動きを計算してみます。

ダム崩壊問題

SPH法ダム崩壊

ここをクリックすると別ウィンドウが開きます

開いたウインドウで画像の下の[再生/停止]ボタンを押してみてください。これはダム崩壊(Dam break)という問題で、初期に水槽の左側にダムのように水が貯えられているとします。そして、計算開始時にダムが瞬時に崩壊したとして、その後の水の挙動を計算しています。

回転するブレード

SPH法回転ブレード

ここをクリックすると別ウィンドウが開きます

次は回転するブレードによって水がかき上げられるシミュレーションです。

ちなみに、これはいわゆる動画ではなく、使用しているブラウザ上で時々刻々計算している結果をリアルタイムに出力しています。

※ブラウザは、Google Chromeか、Microsoft Edgeの使用を推奨します。Internet Exploreでは動作しません。

講座ではこれらの計算の手法やプログラミングについて説明していきます。

粒子法とは

計算の画像を見ると分かるとおり、水は粒子で表現されています。この粒子一つ一つの運動方程式を解いて全体の挙動を計算しています。このように粒子の運動を解いていく方法をラグランジュ的手法といいますが、この手法を使って全体の流体の挙動を計算するのが「粒子法」です。

一方で、これまでの講座では差分法第3回)や有限体積法第4回)といった手法を学びました。これらは、空間を格子やコントロールボリュームといった微小空間に分割し、それぞれの格子点の物理量を計算していました。この計算方法は粒子法に対して「格子法」と呼ばれています。またこのような手法はオイラー的手法ともいいます。

格子法と粒子法

実際の水は水分子という小さな粒子でできていて、その分子が運動しているので、粒子法の方が水の流れとしてはイメージしやすいかも知れません。ただし、実際の水分子の大きさは非常に小さく、粒子数は莫大です。粒子法で計算している粒子は、もっとマクロなスケールの仮想粒子をモデル化したものなので、水分子を解いているわけではありません。また、ここでは水の粒子だけでなく、水槽やブレードなど固体も粒子で表現しています。

現在、製造業などで実際に使われている工学的な流体解析の分野では、有限体積法による格子法の占める割合が多いと思います。ただし、今回の例のような気体中の液体の挙動(自由表面)に関しては粒子法もよく使われています。

SPH法とは

粒子法の中にも色々な種類がありますが、その中でも今回はSPH法という手法で計算を行ってみたいと思います。

SPH(Smoothed Particle Hydrodynamics)法は、1970年代に開発された手法で、もともとは銀河などの星団の衝突や合体といった天体物理の分野で使われました。銀河を構成する1個1個の星は、ちょうど水分子のようなイメージで、大域的に集合すると圧縮性流体のように振る舞います。圧縮性流体とは気体などのように体積(密度)が変化する流体です。SPH法はこのような宇宙物理の圧縮性流体を解析するために開発されましたが、その後実際の流体の運動や固体の変形、伝熱、非圧縮性流体への適用など様々な分野に応用されています。また、コンピュータ・グラフィックス(CG)で液体のアニメーションを本物のように見せる場合にもSPH法のような粒子法が使われています。

SPH法は圧縮性流体を解析する手法として発展してきましたが、水のような液体は非圧縮性流体として扱われることが多いです。非圧縮性とは体積の膨張圧縮がなく、密度が一定に保たれる流体です。このような非圧縮性流体を扱うための粒子法としてMPS(Moving Particle Semi-implicit)法という別の手法が考えられています。

今回の講座では、SPH法を扱います。SPH法にもいろいろな定式化やモデル化がなされており数多くの種類があります。ここではSPH法の概略を理解することを目的として、なるべく複雑にならないよう説明していきたいと思います(といっても、かなり多くのややこしい数式がでてきます。。。)。

まとめ

粒子法(SPH法)についての導入部分をお話しました。粒子法は宇宙物理から発展してきましたが、CGにも使われており自由界面をもつ液体の挙動を計算する手法として多用されています。現在も活発に研究されている分野です。

次回は、SPH法の説明の前に、今回使うJavaScriptというプログラム言語についてお話したいと思います。


→次回 JavaScriptでHello World!!

全体の目次

スポンサーリンク
科学技術計算のご相談は「キャットテックラボ」へ

科学技術計算やCAEに関するご相談、計算用プログラムの開発などお困りのことは「株式会社キャットテックラボ」へお問い合わせください。

お問い合わせはこちら

フォローする