MENU閉じる

LAB

デモプログラム

研究室デモプログラム2013.11.3

【対流シミュレーション(格子ボルツマン法)】 – Flow simulation (Lattice Boltzmann Method) –

粒子法のようなパーティクルベースの流体では「水しぶき表現が柔軟に実現可能」というメリットがあります。
今回は粒子法ではなく、別の方法を紹介してみようということで格子形状を使ったグリッドベースの実装をしてみたいと思います。
グリッドを使ったシミュレーションはシミュレーションする領域が均一に広がるということや流れの解析にメリットがあります。
(もちろん粒子法のMPS法でもこのような表現は可能です)

 
個人的にはゲームの中で、舞い散る落ち葉の動きや、空気が淀んだ場所には吹き溜まりができていたり、水流で物が流れていったり等インタラクティブに表現できたら良いなぁ…と思っています。
今回、実験で作成したのは『格子ボルツマン法(Lattice Boltzmann Method)』と言われる手法です。

 
読んでみる書籍としては書籍は下記のものがお勧めです(とはいえ内容は数式に満ちていますが…)

 
■格子気体法・格子ボルツマン法―新しい数値流体力学の手法

 
2009-08-27-book

 
蔦原 道久 (著), 片岡 武 (著), 高田 尚樹 (著) 

 
構造は実にシンプルです。
空間を格子で区切り、それぞれに圧力(気圧)情報を持たせて高い圧力の部分から隣接する低い圧力の部分へ流れ込むように流れが変化するという格子気体モデルという考え方です。
圧力を均一に保とうとする自然界の物理現象をシミュレートします。
「流れ込む分子量」と「押し出される分子量」の合計でその領域の速度を決定するというアルゴリズムです。

他の技術系の話と違ってこのアルゴリズムは日本語の文献が多くて助かりますね。

 
2009-08-27-lbm

 
技術的な計算部分は割愛しますが、今回は3次元27速度(D3Q27)モデルを使っています。

【格子ボルツマン法の計算フロー】流体は衝突を繰り返しながら直進(並進)します。

 
Youtubeに同様に流体のシミュレーションをしている動画がありましたのでご紹介しておきます。
 

大抵このようなシミュレーション系の計算のために文献を読むと難しそうな数式が並びます。
例えば今回のものの中から抜粋するとこんな感じです。
 
2009-08-27-lbm_math
 
難しそうに書いてありますが、実はC言語で記述すると大して難しい計算ではありません。次のようになります。
 
2009-08-27-source
 
この式が今回の挙動計算の肝になっています。
流れの具合がよくわかるように中にパーティクルを配置して流れに乗せて動かしてみます。
これで渦や流れがよくわかるようになります
 
書籍では「GPU Gems 2」にもこのアルゴリズムが紹介されています。
 
【参照】Chapter47. 複雑な境界を持つ流れのシミュレーション p687

 

今回のデモではちょっとゲームっぽくインタラクティブにするためにリアルタイムでいじれるようにしてあります。

 
 
2009-08-27-flow_1-12009-08-27-flow_2-1
 
 
 
 
 
 
 
 
 
区切られた部屋の中にポンプや扇風機のように流れを強制的に発 生させます。
そして、その影響を受けて複雑な対流が発生します。
壁仕切りや球体などの障害物も設置できるようにしました。
 
技術デモは下記よりダウンロード可能です。
 
 
◎動作可能な環境
GeForce 6800シリーズ以降
Radeon X1000シリーズ以降
 
基本的にはシェーダーモデル3.0以降で動作します。
レイトレーシングなど特殊なレンダリング手法を用いていますのでドライバの不具合などで一部動作しない環境があるかもしれません。
なるべく最新のデバイスドライバで実行してください。

Download
HexaFlow.zip (約2.0MB)

【動作確認済ハードウェア】
nVIDIA GeForce9800GT
AMD RadeonHD4350

【操作方法】
画面左クリック&ドラッグ    視点を回転
    パーティクル配置を初期化
    ポンプ ON/OFF
    横仕切り板 ON/OFF
    縦仕切り板 ON/OFF
    球体 ON/OFF

 
 
2009-08-27-flow_4 2009-08-27-flow_3
 
 
 
 
 
 
 
 
 

実行環境を持っていない方のために動画を用意しました。

HD解像度で閲覧可能です。

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE