Stable Fluids

流体のソルバーに関して勉強したいと思います。まずは、Jos Stamさんが1999年のSiggraphで発表したStable Fluidsと題した論文を読んでみたいと思います。これに引き続き、氏がGDC2003で発表した、Real-Time Fluid Dynamics for Gamesも見ていきたいと思います。

1. Introduction

詳細は省略します。
流体シミュレーションの重要性、過去の関連のある研究について触れられています。
また、この論文で紹介される手法では、シミュレーションがどのような条件下でも、破綻、発散しないこと、
比較的簡単に実装可能であることが述べられています。

2 Stable Navier-Stokes

2.1 Basic Equation

この章では、Navier-Stokes方程式を我々のstableソルバーの導出に沿って解説します。
密度と温度がほぼ一定な流体は、velocity field, uとpressure field, pで表現することが出来ます。
これ等の物理量は位置と時間で変動し、流体を取り巻く環境との境界に依存します。
位置座標をxで示します、2次元ならx=(x,y),3次元の流体ならx=(x,y,z)とします。
ここでは、特定の次元に限定しません。すべての演算結果は、特に明記されていない限り、
2次元,3次元どちらでも有効です。

初期条件として、速度と圧力がとある時間で既知ならば、これ等の物理量の時間の経過による変動は以下のNavier-Stokes方程式で示されます。[3]
eq1_2

νは流体のkinematic visocity(動粘性摩擦)で、ρは密度、fは外力となります。読者のかなには、この簡易表記のNavier-Stokes方程式になじみが無いかもしれません。
(Eq.2)は、ベクトル要素の方程式で、3(2次元では2)要素のvelocity fieldになります。”・”はベクトル同士の内積をあらわし、∇は位置の偏微分のベクトルをあらわします。
詳しく書けば、2次元では∇=(∂/∂x, ∂/∂y)で、3次元ならば、∇=(∂/∂x, ∂/∂y, ∂/∂z)となります。
さらに∇^2を略記で使います。これは∇・∇をあらわします。

このNavier-Stokes方程式は、質量保存(Eq.1)と運動量保存(Eq.2)の上に導出されます。
実際の導出については、スタンダードな流体物理学のテキストを参照してください。
これ等の方程式は、境界条件についても定義されていなければなりません。
この論文の中では、実際の応用で有用な、2種類の境界条件を考慮します。周期的境界条件と、固定境界条件です。
周期的境界条件では、流体は、n-次元(n=2,3)の円環として定義され、壁は存在しません。
現実にはこのような流体に遭遇することは無いですが、物理量の進展を表すテクスチャを作成する際にはとても有用です。
また、この境界条件は後ほど示す、FFTを用いた、とてもエレガントな実装をもたらします。
2番目の境界条件は、流体が区切られたDomain Dに充填されている場合です。
この場合は、境界条件は、Domainの境界上∂Dで定義される、関数udで与えられます。
FosterとMetaxasの論文の、熱い流体のケースで、これ等の境界についてよい記述があります。[7]
どんな場合でも、境界条件のvelocity fieldの法線成分は、境界上では0であるべきです。なにも壁を通り抜けません。

Navier-Stokes方程式に出てくる、pressureとvelocity fieldは関係性があります。
velocityのためのひとつの等式が(Eq.1)と(Eq.2)より得ることが出来ます。
これは、我々のアルゴリズムの基礎となるので、この導出の概略を示します。
我々はChorinとMarsden’sの(p.36 ff,[3])の議題の取り扱いに従います。
数学的結果といして、Helmholtz-Hodge Decompositionは、どんなvector field:wも、一意に以下の形式に分解することが出来ます。
eq3

uは発散がゼロです(∇・u=0)qはscalar fieldになります。
どんなvector fieldもmass conserving field (質量保存 field)とgradient field(勾配 field)の和で構成されます。
この結果によって、vector filedを発散が無い成分に投影する操作Pを定義できます。
この操作は、実はEq3の両辺に∇を乗算することで暗に定義されます。
eq4

これは scalar filed q のNeumann境界条件:∂Dにおいて∂q/∂n=0のPoisson 方程式になります。
この方程式の解は、投影uを計算するのに使われます。
eq4_

この投影操作PをEq.2の両辺に適用したら、velocityに関する以下の式を得ます。
eq5
これはPu=uと、P∇p=0であることを利用しています。
これは、これから紹介する、stable fluid solverの基礎となる方程式です。

[ここまでで。感想]

流体に関する基礎知識が無さ過ぎるので、なんのことやらなのですが、Eq.1はいわゆる連続の式で、非圧縮性流体の一部の流入量と流出量が等しいことから導き出されます。
Eq.2は非圧縮性流体のNavier-Stokes方程式として一般的に知られるものです。
Eq.5は、投影操作PをEq.2に適用したものですが、これはEq.1とEq.2を連立させたものとも解釈できます。
またこれを適用することで、Navier-Stokes方程式の圧力項を消去することに成功しています。
この式の計算には、Poisson方程式を解く必要がありますが、圧力項を考慮せずに、velocity fieldの時間的進展を計算することが出来そうです。
また、Eq.2とEq.5を連立させると、Poisson方程式で求めるqは、実はNavier-Stokes方程式の圧力項の部分に相当することが分かります。

[次回は]

引き続きこの論文を読んでいきたいと思います。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中