プロジェクト3B 中間発表
法政大学 情報科学部 ディジタルメディア学科
14K1020 髙尾航大
テーマ
SPH法のGPU実装
使用環境は Unity
SPH法とは?
• Smoothed Particle Hydrodynamics Method
• 連続体に関する方程式を粒子単位で近似し、ラグランジュ的に解く
手法の一種。
• 今回は流体の方程式に適用する。
ラグランジュ的?
オイラー(Euler)的とラグランジュ(Lagrange)的の違い
SPH法における物理量
• SPH法を用いてNavier-Stokes方程式を解いていく。
• SPH法における物理量の離散表現
𝜙 𝕩 =
𝑗 ∈ 𝑁
𝑚𝑗
𝜙𝑗
𝜌𝑗
𝑊(𝕩𝑗 − 𝕩, ℎ)
物理量の勾配・ラプラシアン
𝛻𝜙 𝕩 =
𝑗 ∈ 𝑁
𝑚𝑗
𝜙𝑗
𝜌𝑗
𝛻𝑊(𝕩𝑗 − 𝕩, ℎ)
𝛻2
𝜙 𝕩 =
𝑗 ∈ 𝑁
𝑚𝑗
𝜙𝑗
𝜌𝑗
𝛻2
𝑊(𝕩𝑗 − 𝕩, ℎ)
カーネル重み関数
• 粒子間の距離で重みを決定する。
𝑊𝑝𝑜𝑙𝑦6 𝑟, ℎ =
315
64𝜋ℎ9
(ℎ2
− 𝑟2
)3
, 0 ≤ 𝑟 ≤ ℎ
0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
𝛻𝑊𝑝𝑜𝑙𝑦6 𝑟, ℎ = −
945
32𝜋ℎ9
(ℎ2
− 𝑟2
)2
𝑟, 0 ≤ 𝑟 ≤ ℎ
0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
𝛻2 𝑊𝑝𝑜𝑙𝑦6 𝑟, ℎ = −
945
32𝜋ℎ9
3(ℎ2
− 𝑟2
)3
− 4𝑟2
(ℎ2
− 𝑟2
), 0 ≤ 𝑟 ≤ ℎ
0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
物理量の例 - 密度ρ
• 物理量の式のρをφと入れ替えてみると…
𝜌 𝕩 =
𝑗 ∈ 𝑁
𝑚𝑗
𝜌𝑗
𝜌𝑗
𝑊 𝕩𝑗 − 𝕩, ℎ =
𝑗 ∈ 𝑁
𝑚𝑗 𝑊 𝕩𝑗 − 𝕩, ℎ
• 密度は周辺粒子の質量と距離にだけ依存することがわかる
Navier-Stokes方程式
• 流体の世界の運動方程式的なもの
𝛻 ∙ 𝕧 = 0
𝜕𝕧
𝜕𝑡
+ 𝕧 ∙ 𝛻 𝕧 =
𝜇
𝜌
𝛻2
𝕧 −
1
𝜌
𝛻𝑝 + 𝑓𝑒𝑥𝑡
質量保存則
運動量保存則
Navier-Stokes方程式をSPH風に(1)
粒子自体が液体であることから、粒子の重さが変化しない限り
質量保存性は考慮しなくて良い。(質量一定より常に保持される)
また、移流を表す 𝕧 ∙ 𝛻 𝕧 も考慮しなくて良い。
(ラグランジュ的解法だから移流はそもそも起こらない)
Navier-Stokes方程式をSPH風に(2)
𝜕𝕧
𝜕𝑡
+ 𝕧 ∙ 𝛻 𝕧 =
𝜇
𝜌
𝛻2
𝕧 −
1
𝜌
𝛻𝑝 + 𝑓𝑒𝑥𝑡
𝜕𝕧
𝜕𝑡
=
𝜇
𝜌
𝛻2
𝕧 −
1
𝜌
𝛻𝑝 + 𝑓𝑒𝑥𝑡
考慮しないものはさよなら
Navier-Stokes方程式をSPH風に(3)
𝜕𝕧
𝜕𝑡
=
𝜇
𝜌
𝛻2
𝕧 −
1
𝜌
𝛻𝑝 + 𝑓𝑒𝑥𝑡
𝜌
𝜕𝕧
𝜕𝑡
= 𝜇𝛻2
𝕧 − 𝛻𝑝 + 𝜌𝑓𝑒𝑥𝑡
両辺 𝜌 倍
Navier-Stokes方程式をSPH風に(4)
𝜌
𝜕𝕧
𝜕𝑡
= 𝜇𝛻2
𝕧 − 𝛻𝑝 + 𝜌𝑓𝑒𝑥𝑡
𝜌𝑖
𝕧 𝑖
𝑡
= 𝑓𝑖
𝑓𝑖 = 𝜇𝛻2
𝕧 − 𝛻𝑝𝑖 + 𝜌𝑖 𝑓𝑒𝑥𝑡
粘性拡散項 圧力項 この際𝜕𝑡は決め打ちで計算する
粘性拡散項の離散化
物理量離散化式ラプラシアンのφを𝕧に置き換えるが、
𝑓𝑖
𝑣𝑖𝑠𝑐
= 𝜇𝛻2
𝕧 = 𝜇
𝑗
𝑚𝑗
𝕧𝑗 − 𝕧𝑖
𝜌𝑗
𝛻2
𝑊𝑣𝑖𝑠𝑐(𝕩𝑗 − 𝕩𝑖)
Symmetricではない為、少し工夫して変形
「iからjに与える力」と「jからiに与える力」が異なり、
圧力項の離散化
𝑓𝑖
𝑣𝑖𝑠𝑐
= 𝛻𝑝 = −
𝑗
𝑚𝑗
𝑝𝑗 + 𝑝𝑖
2𝜌𝑗
𝛻𝑊𝑝𝑟𝑒𝑠𝑠(𝕩𝑗 − 𝕩𝑖)
同様にSymmetricではない為、少し工夫して変形
粒子間の圧力の平均。
圧力・密度解法のソース
NS方程式解法のソース
GPU実装
• UnityComputeShaderを用いてSPH計算
C# Script
Struct
Compute Shader
(SPH)
Struct
Compute Buffer
Shader
Output
Dispatch
GPULoop
CPU
粒子のレンダリング
• ComputeShader出力されたバッファをもとに粒子を描画。
• GeometryShaderを用いて常に視点を向くビルボードを作成。
-> Sphereで出力しないことにより軽量化
Position(Buffer)
Billboard
GeometryShader
Weekly CG Challenge !
• Ray Marching
• Iridescent Shader
• Marching Cubes
• Newton Method
• Fitting Line Algorithm
• Tornado
レイマーチング法
レイトレーシングの一種。
他オブジェクトとの交差表現が得意
レイの先端と空間内のオブジェクトとの最短距離分レイを進める
オブジェクトは距離関数で定義
マーチングキューブ法
ボリュームデータの境界面表現手法。
空間を格子分割して格子の各頂点の値によって面を張る。
今後の予定
・SPH法の計算最適化
・MPM法の理解と雪のシミュレーションの実装
・SPH粒子のメッシュ衝突判定

More Related Content

PDF
[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)
PPT
Marching Cubes
PDF
OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]
PPTX
チームラボ サマーインターン発表スライド
PPTX
CG Image Recognition with Deep Learning
PPTX
プロジェクト3A テーマ発表
PPTX
Computer Graphics from the Mathematical Aspects - Lecture 1
PDF
Computer Graphics
[計算シミュレーション勉強会#1] 粒子法の復習(陽解法と陰解法の比較から)
Marching Cubes
OpenMPSみんな使ってねー[第36回オープンCAE勉強会@関東]
チームラボ サマーインターン発表スライド
CG Image Recognition with Deep Learning
プロジェクト3A テーマ発表
Computer Graphics from the Mathematical Aspects - Lecture 1
Computer Graphics
Ad

Smoothed Particle Hydrodinamics