Youtube登録者5000人突破!!

【CFD/粒子法】粒子法のメリット 【粒子法入門 #3】

粒子法を用いた流体解析(CFD)の解説を行っています。第3回は、格子法と比べたときの粒子法のメリットについて解説します。

前回は影響半径とカーネル関数について解説しました。まだ見てないかたはこちらからどうぞ。

粒子法のメリット

粒子法のメリットを知る前に、格子法と粒子法の違いについて振り返っておきましょう。

格子法はメッシュを切って各セルの計算を行う方法です。隣のセルと相互作用することが決定しているので、精度が安定して出しやすいです。

画像に alt 属性が指定されていません。ファイル名: image-4.png
メッシュイメージ

格子法は単相流は非常に得意ですが、混相流に関してはかなり苦戦していてまだ発展途上といったところです。やり方にもよりますが、実用化されているほとんどの解析手法において液体と気体の境界がぼやけるという非現実的な問題が起きます。

界面がぼやけている様子

一方、粒子法では移動する粒子を用いて流体を模擬します。そのため、流体がどこにいるかがはっきりしており、格子法のような「気液界面のぼやけ」は発生しません。ただし、粒子法にも欠点はあり、精度が十分に担保されないという問題もあります。そもそも粒子法の精度が悪いという問題もありますが、それとは別に粒子法である以上は避けられない問題があります。

例えば、下記のように粒子がバラバラの場合は、極端に粒子の少ない部分が現れます。粒子法では、このような場合の流体の挙動を正しく捉えることができません。理由としては2つあります。1つ目は影響半径内に粒子がいない場合は圧力や速度など、まともな計算ができないということです。2つ目は気体の計算をしないので、液滴が気体から受ける影響も無視されるということです。

上記理由から、粒子法は場所によって精度が極端に落ちる傾向があります。ただ一方で、これが粒子法の強みでもあります。矛盾しているように聞こえるかもしれませんが、そもそも格子法では液滴の計算が困難だったので、いい加減でも計算結果を出してくれるのはありがたいというわけです。

このような特徴から、粒子法が格子法と比べて一番勝っていると言われるのが、液滴やしぶきの計算です。要は、液体が細かく分散しても、精度はともかくいい感じの結果を出してくれるのが一番の利点というわけです。

粒子法のもう一つの強み

粒子法のもう一つの強みが計算の速さです。単純な比較でいうと、格子法も粒子法も同じ細かさで同じ計算方法なら大して違いはないと思います。しかし、粒子法には相性の良い計算があり、それが急速に進化していることで粒子法が注目を浴びています。それが、GPUコンピューティングです。

GPUコンピューティング(GPGPU)

GPUコンピューティングについて知らない人のために簡単に解説します。

PC内の計算は主にCPUで行われますが、グラフィックだけはGPUで計算するのが一般的です。なぜかというと、グラフィックは普通のPC操作などの処理と違って、たくさんの計算をしないといけないからです。

GPUコンピューティングでは、GPUをグラフィック以外にも使用します。GPUコンピューティングはGPGPU(General Porpose GPU)と呼ばれることが多いです。GPUを計算に使う理由は、並列化に特化して作られているからです。

従来はCPUに計算をさせてPC自体をつなげることで並列化させていました。しかしPC自体を並列化させると、データ転送が問題になります。まずマルチコアCPUの場合はメモリにおけるデータ通信が問題となり、PCをつなげて使っている場合はPCのデータ転送に非常に時間がかかります。ここが大きなネックになっており、現在のスパコンはGPUを搭載したものがほとんどになっています。

GPUと粒子法の相性の良さ

ただこのGPUというものはかなりクセがあり、用途も限られます。格子法では液体流れを解くときには非圧縮流れの計算を解くことになるのですが、この計算はGPU相性が悪いです。具体的には、圧力計算時にメモリ通信が頻繁に発生するのと、全ての格子が同じスピードで計算する必要があります。その結果、GPUがいくら速くてもメモリアクセスに時間がかかって計算が速くなりません

一方で粒子法では、周りとの相互作用に影響半径とカーネル関数を使用するため、各粒子のメモリアクセスの範囲が小さいです。これによって、各粒子を並列計算しやすくなっており、GPUと非常に相性が良い計算方法となっています。

細かい話がわからないという方のためにイメージだけ伝えておくと、格子法では手をつないでゴールする必要があるのに対して、粒子法では速い人が2回走れば良いという違いです。流体解析は場所毎に計算の安定性が変わるので、速い人が2回走ったほうがトータルでは早くなります。

おわりに

今回は粒子法の利点について解説しました。1つ目は、格子法に比べて飛沫が計算できることです。正確ではないですが、ある程度正しい結果が出てくるだけでも実用には耐えうる場合があります。2つ目は並列化に強いことです。GPGPUとの相性が良いので、大規模な計算を行っても、現実的な時間で計算を終えることができます。

ちなみに、世の中の粒子法ソフトウェアは既にGPU計算を行えるようにしているものがほとんどです。興味があればDualSPHysicsなどのフリーソフトもあるので触ってみてください。

次回は粒子法の代表的な手法であるMPS法とSPH法の違いについて解説します。下記からどうぞ。

youtubeでもいろいろ解説してます。そちらもどうぞ。