置き去りになったメモ

数値計算、代数、関数型プログラミングとか?

MPS法とナビエ・ストークス方程式 概論

こんにちは、やきつか(@sy_t_)です。
大学に受かって暇なのでブログをはじめました(開設自体は1年前)。
せっかく研究で流体のシュミレーションをしているので最初はそれについて書いていくのも一興かなと。
とりあえずは、この記事を出発点として、MPS法の概要から具体的手法、シュミレーション結果まで何回かに分けて書いていこうと思います。
初学者なので、間違いがあったら教えてくれると幸いです。


MPS法って一体何なの? ナビエ・ストークス方程式?

早速ですが。
MPS法は、東京大学の越塚誠一さんという方が開発した手法で、Moving Particle Semi-implicitの頭文字をとったものになります。
MPS法を説明するためには、まず粒子法というものを説明しなければなりません。
Wikipediaを引いてみますと、

粒子法(りゅうしほう)とは、連続体に関する方程式を数値的に解くための離散化手法の一つで、計算対象物を粒子の集まりとして表すことからこのように呼ばれる。

主に流体解析,構造解析に用いられる手法で、代表的なものとしてDEM(Distinct Element Method)法, SPH(Smoothed Particle Hydrodynamics)法, MPS(Moving Particle Semi-implicit)法などがある。

と書いてあります。例のごとくwikipediaはお硬い文章なので、噛み砕いて説明しようと思います。
まず、"連続体"についてですが、弾性体と流体のことです。弾性体は力が加わっていなければ元の形に戻るような物体(ゴムボールとか)で、流体は流れる物体(気体・液体とか)のことですね。
この連続体である流体に関する挙動を記述するのが(あの)ナビエ・ストークス方程式です!
次に、そのナビエ・ストークス方程式を示します。

f:id:yakituka:20190716123008p:plain
NS-Eq
ヤバイ形してますね。
ぼくは物理屋さんではないので導出に至る経緯は知らないんですけど、ニュートン運動方程式に比べて形がおぞましい。

上の方程式を扱えればいいんですけど、さすがにこのままでは複雑すぎるので、様々な条件を仮定することで簡単な形に持っていきます。

流体の粘性率が一定で、非圧縮性の流れであることを仮定すれば、次のような方程式へと変貌します。

f:id:yakituka:20190716123511p:plain
NS-easy-Eq
だいぶマシになりました。
まず、方程式の各文字について説明していきたいと思います。
まず最も重要なのはvですね。vは流体の速度場です、速度は3次元だと3つの成分を持つのでベクトルです。つまりvは速度のベクトル場になります。

ρは流体の密度場で、直感的には流体がある地点にどれぐらい密集しているかをあらわしています

p(ρと間違えてはいけない)は圧力場で、空間にどのように圧力が分布しているかを示しています。

νは粘性係数で、物体の粘性がどれぐらいなのかを示します、スカラーです。

gは外力です、重力などが相当します。

次に方程式の各項について見ていきたいと思います。
左辺の項は速度のラグランジュ微分になっていて、流れと同じ動きをする座標系からみた加速度になっています。

右辺の第一項は圧力勾配項と呼ばれるもので、空間の圧力の傾きが最小となるような方向を向く力を表しています、ベクトルになります。

右辺の第二項は粘性項と呼ばれるもので、流体の速度をまわりに近づけようとする力です。

右辺の第三項は外力で、重力下ならば(0,0,-9.8)のようなベクトルが常にかかることを意味します。

かなり、大雑把な説明になりましたがナビエ・ストークス方程式はこういうものです。
粒子法は、流体を粒子、つぶつぶの集まりとして考えて、そのつぶつぶがナビエ・ストークス方程式に従って動くように見せかける手法です。

お手元にあるコンピュータでこれを解くには、なんらかの"離散化"をしてあげる必要があって、その手法にDEM,SPH,MPSなどの種類があるイメージです。

次回以降は。MPS法でナビエ・ストークス方程式をどのように"離散化"するのか、具体的に書いていこうと思います!