Top Banner
ププププププ 3B ププププ ププププ プププププ プププププププププププ 14K1020 ププププ
23

Smoothed Particle Hydrodinamics

Apr 12, 2017

Download

Technology

Kodai Takao
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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 粒子のメッシュ衝突判定