smoothed particle hydrodinamics

23
ププププププ 3B ププププ ププププ プププププ プププププププププププ 14K1020 ププププ

Upload: kodai-takao

Post on 12-Apr-2017

265 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Smoothed Particle Hydrodinamics

プロジェクト 3B 中間発表法政大学 情報科学部 ディジタルメディア学科

14K1020 髙尾航大

Page 2: Smoothed Particle Hydrodinamics

テーマ

SPH 法の GPU 実装

使用環境は Unity

Page 3: Smoothed Particle Hydrodinamics

SPH 法とは?

• Smoothed Particle Hydrodynamics Method

• 連続体に関する方程式を粒子単位で近似し、ラグランジュ的に解く手法の一種。

• 今回は流体の方程式に適用する。

Page 4: Smoothed Particle Hydrodinamics

ラグランジュ的?

オイラー (Euler) 的とラグランジュ (Lagrange) 的の違い

Page 5: Smoothed Particle Hydrodinamics

SPH 法における物理量

• SPH 法を用いて Navier-Stokes 方程式を解いていく。

• SPH 法における物理量の離散表現

𝜙 (𝕩 )=∑𝑗∈𝑁

𝑚 𝑗𝜙 𝑗

𝜌 𝑗𝑊 (𝕩 𝑗−𝕩 , h)

Page 6: Smoothed Particle Hydrodinamics

物理量の勾配・ラプラシアン

𝛻𝜙 (𝕩 )=∑𝑗∈𝑁

𝑚 𝑗𝜙 𝑗

𝜌 𝑗𝛻𝑊 (𝕩 𝑗−𝕩 ,h)

𝛻2𝜙 (𝕩 )=∑𝑗∈𝑁

𝑚 𝑗𝜙 𝑗

𝜌 𝑗𝛻2𝑊 (𝕩 𝑗−𝕩 , h)

Page 7: Smoothed Particle Hydrodinamics

カーネル重み関数

• 粒子間の距離で重みを決定する。

𝑊 𝑝𝑜𝑙𝑦 6 (𝑟 ,h )= 31564𝜋 h9 {(h

2−𝑟 2)3 ,0≤𝑟 ≤h0 , h𝑜𝑡 𝑒𝑟𝑤𝑖𝑠𝑒

𝛻𝑊𝑝𝑜𝑙𝑦 6 (𝑟 , h )=− 94532𝜋 h9 {(h

2−𝑟2)2𝑟 ,0≤𝑟 ≤h0 , h𝑜𝑡 𝑒𝑟𝑤𝑖𝑠𝑒

𝛻2𝑊𝑝𝑜𝑙𝑦 6 (𝑟 , h )=− 94532𝜋 h9 {3(h

2−𝑟2)3−4𝑟 2(h2−𝑟 2) ,0≤𝑟 ≤h0 , h𝑜𝑡 𝑒𝑟𝑤𝑖𝑠𝑒

Page 8: Smoothed Particle Hydrodinamics

物理量の例 - 密度 ρ• 物理量の式の ρ を φ と入れ替えてみると…

𝜌 (𝕩 )=∑𝑗∈𝑁

𝑚 𝑗𝜌 𝑗

𝜌 𝑗𝑊 (𝕩 𝑗− 𝕩 , h )=¿ ∑

𝑗 ∈𝑁𝑚 𝑗𝑊 (𝕩 𝑗−𝕩 , h )¿

• 密度は周辺粒子の質量と距離にだけ依存することがわかる

Page 9: Smoothed Particle Hydrodinamics

Navier-Stokes 方程式

• 流体の世界の運動方程式的なもの

𝛻 ∙𝕧=0𝜕𝕧𝜕𝑡 +(𝕧 ∙𝛻 ) 𝕧=

𝜇𝜌 𝛻

2𝕧 − 1𝜌 𝛻𝑝+ 𝑓 𝑒𝑥𝑡

質量保存則

運動量保存則

Page 10: Smoothed Particle Hydrodinamics

Navier-Stokes 方程式を SPH 風に (1)

粒子自体が液体であることから、粒子の重さが変化しない限り質量保存性は考慮しなくて良い。 ( 質量一定より常に保持される )

また、移流を表す も考慮しなくて良い。( ラグランジュ的解法だから移流はそもそも起こらない )

Page 11: Smoothed Particle Hydrodinamics

Navier-Stokes 方程式を SPH 風に (2)

𝜕𝕧𝜕𝑡 +(𝕧 ∙𝛻 ) 𝕧=

𝜇𝜌 𝛻

2𝕧 − 1𝜌 𝛻𝑝+ 𝑓 𝑒𝑥𝑡

𝜕𝕧𝜕𝑡 =

𝜇𝜌 𝛻

2𝕧− 1𝜌 𝛻𝑝+ 𝑓 𝑒𝑥𝑡

考慮しないものはさよなら

Page 12: Smoothed Particle Hydrodinamics

Navier-Stokes 方程式を SPH 風に (3)

𝜕𝕧𝜕𝑡 =

𝜇𝜌 𝛻

2𝕧− 1𝜌 𝛻𝑝+ 𝑓 𝑒𝑥𝑡

𝜌 𝜕𝕧𝜕𝑡 =𝜇𝛻2𝕧−𝛻𝑝+𝜌 𝑓 𝑒𝑥𝑡

両辺倍

Page 13: Smoothed Particle Hydrodinamics

Navier-Stokes 方程式を SPH 風に (4)

𝜌 𝜕𝕧𝜕𝑡 =𝜇𝛻2𝕧−𝛻𝑝+𝜌 𝑓 𝑒𝑥𝑡

𝑓 𝑖=𝜇𝛻2 𝕧−𝛻𝑝𝑖+𝜌𝑖 𝑓 𝑒𝑥𝑡粘性拡散項 圧力項 この際は決め打ちで計算する

Page 14: Smoothed Particle Hydrodinamics

粘性拡散項の離散化

物理量離散化式ラプラシアンの φ をに置き換えるが、

𝑓 𝑖𝑣𝑖𝑠𝑐=𝜇𝛻2 𝕧=𝜇∑

𝑗𝑚 𝑗

𝕧 𝑗− 𝕧𝑖

𝜌 𝑗∇2𝑊 𝑣𝑖𝑠𝑐(𝕩 𝑗−𝕩 𝑖)

Symmetric ではない為、少し工夫して変形

「 i から j に与える力」と「 j から i に与える力」が異なり、

Page 15: Smoothed Particle Hydrodinamics

圧力項の離散化

𝑓 𝑖𝑣𝑖𝑠𝑐=∇𝑝=−∑

𝑗𝑚 𝑗

𝑝 𝑗+𝑝𝑖

2 𝜌 𝑗∇𝑊 𝑝𝑟𝑒𝑠𝑠(𝕩 𝑗−𝕩 𝑖)

同様に Symmetric ではない為、少し工夫して変形

粒子間の圧力の平均。

Page 16: Smoothed Particle Hydrodinamics

圧力・密度解法のソース

Page 17: Smoothed Particle Hydrodinamics

NS 方程式解法のソース

Page 18: Smoothed Particle Hydrodinamics

GPU 実装

• UnityComputeShader を用いて SPH 計算

C# Script

Struct

Compute Shader (SPH)

Struct

Compute Buffer

Shader

Output

Dispatch

GPU LoopCP U

Page 19: Smoothed Particle Hydrodinamics

粒子のレンダリング

• ComputeShader 出力されたバッファをもとに粒子を描画。

• GeometryShader を用いて常に視点を向くビルボードを作成。

-> Sphere で出力しないことにより軽量化

Position(Buffer)Billboard

GeometryShader

Page 20: Smoothed Particle Hydrodinamics

Weekly CG Challenge !• Ray Marching• Iridescent Shader• Marching Cubes• Newton Method• Fitting Line Algorithm• Tornado

Page 21: Smoothed Particle Hydrodinamics

レイマーチング法

レイトレーシングの一種。

他オブジェクトとの交差表現が得意

レイの先端と空間内のオブジェクトとの最短距離分レイを進める

オブジェクトは距離関数で定義

Page 22: Smoothed Particle Hydrodinamics

マーチングキューブ法

ボリュームデータの境界面表現手法。

空間を格子分割して格子の各頂点の値によって面を張る。

Page 23: Smoothed Particle Hydrodinamics

今後の予定

・ SPH 法の計算最適化

・ MPM 法の理解と雪のシミュレーションの実装

・ SPH 粒子のメッシュ衝突判定